V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
evemoo
V2EX  ›  Python

Python 的 f-string 格式化时间和 strftime() 的区别是?

  •  
  •   evemoo · 278 天前 · 986 次点击
    这是一个创建于 278 天前的主题,其中的信息可能已经有所发展或是发生改变。

    就只是调用格式化的函数不同看起来更简洁一些?

    print(f"Tick! The time is: {datetime.now():%Y-%m-%d %H:%M:%S}")
    
    print(f"Tick! The time is: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
    
    2 条回复    2023-07-24 17:49:07 +08:00
    kebyn
        1
    kebyn  
       278 天前   ❤️ 1
    官方文档上面讲了的,f-string 格式化时间和 strftime() 是一样的,date.__format__ Same as date.strftime()
    https://docs.python.org/3/library/datetime.html#datetime.date.__format__
    qianye216
        2
    qianye216  
       278 天前
    Python 的 f-string 和 strftime()都可以用来格式化时间,但两者有以下几点区别:

    1. 语法不同:

    - f-string: f"{time:%Y-%m-%d %H:%M}"
    - strftime(): time.strftime("%Y-%m-%d %H:%M")

    2. f-string 可以内嵌表达式,strftime()只接受格式字符串:

    - f"{time:{format}}"
    - strftime(format)

    3. f-string 格式化发生在运行时,strftime 在调用时格式化

    4. f-string 格式化只支持 datetime,strftime 可用于 datetime 和 time

    5. f-string 从 Python 3.6 开始支持,strftime 存在于 2.x 和 3.x

    6. f-string 使用{}包装表达式,strftime 使用%作为占位符

    7. f-string 可以以内联的形式嵌入到字符串中,strftime 需要单独调用

    8. f-string 由 Python 解析实现,strftime 由 C 语言实现,运行效率上会有差异

    综上,主要区别在于语法方式,f-string 作为新特性更灵活,可内嵌表达式,但 strftime 可兼容 2.x,使用 C 实现,运行时效率较高。需要根据具体场景选择。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   964 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 19:24 · PVG 03:24 · LAX 12:24 · JFK 15:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.