Python中time, strftime和strptime

最常用的time.time()返回的是一个浮点数,单位为秒。但strftime处理的类型是time.struct_time,实际上是一个tuple。strptime和localtime都会返回这个类型。

>>> import time
>>> t = time.time()
>>> t
1202872416.4920001
>>> type(t)
<type 'float'>
>>> t = time.localtime()
>>> t
(2008, 2, 13, 10, 56, 44, 2, 44, 0)
>>> type(t)
<type 'time.struct_time'>
>>> time.strftime('%Y-%m-%d', t)
'2008-02-13'
>>> time.strptime('2008-02-14', '%Y-%m-%d')
(2008, 2, 14, 0, 0, 0, 3, 45, -1)

1、strftime的用法

strftime可以用来获得当前时间,可以将时间格式化为字符串等等,还挺方便的。但是需要注意的是获得的时间是服务器的时间,注意时区问题,比如gae撒谎那个的时间就是格林尼治时间的0时区,需要自己转换。

strftime()函数将时间格式化
我们可以使用strftime()函数将时间格式化为我们想要的格式

#!/usr/bin/python
import time

t = (2009, 2, 17, 17, 3, 38, 1, 48, 0)
t = time.mktime(t)
print time.strftime("%b %d %Y %H:%M:%S", time.gmtime(t))

#输出:Feb 17 2009 09:03:38

2.strptime的用法

Python time strptime() 函数根据指定的格式把一个时间字符串解析为时间元组。
python中时间日期格式化符号:

  • %y 两位数的年份表示(00-99)
  • %Y 四位数的年份表示(000-9999)
  • %m 月份(01-12)
  • %d 月内中的一天(0-31)
  • %H 24小时制小时数(0-23)
  • %I 12小时制小时数(01-12)
  • %M 分钟数(00=59)
  • %S 秒(00-59)
  • %a 本地简化星期名称
  • %A 本地完整星期名称
  • %b 本地简化的月份名称
  • %B 本地完整的月份名称
  • %c 本地相应的日期表示和时间表示
  • %j 年内的一天(001-366)
  • %p 本地A.M.或P.M.的等价符
  • %U 一年中的星期数(00-53)星期天为星期的开始
  • %w 星期(0-6),星期天为星期的开始
  • %W 一年中的星期数(00-53)星期一为星期的开始
  • %x 本地相应的日期表示
  • %X 本地相应的时间表示
  • %Z 当前时区的名称
  • %% %号本身

实例:

#!/usr/bin/python
import time

struct_time = time.strptime("30 Nov 00", "%d %b %y")
print "returned tuple: %s " % struct_time

#输出:returned tuple: (2000, 11, 30, 0, 0, 0, 3, 335, -1)
### Pythonstrftime strptime 的用法 `strftime` `strptime` 是 Python 标准库模块 `datetime` 提供的重要函数,分别用于将日期时间对象格式化为字符串以及将字符串解析为日期时间对象。 --- #### 1. `strftime`: 将日期时间对象转换为字符串 `strftime` 函数允许开发者通过指定的格式模板将日期时间对象 (`datetime`, `date`, 或 `time`) 转换为人类可读的字符串形式。 ##### 基本语法 ```python datetime_object.strftime(format_string) ``` - **datetime_object**: 需要被格式化的日期时间对象。 - **format_string**: 定义输出字符串格式的模板。 ##### 示例代码 以下是一些典型的 `strftime` 使用场景: ```python from datetime import datetime now = datetime.now() # 输出当前时间的完整表示 formatted_date_full = now.strftime("%Y-%m-%d %H:%M:%S") # e.g., '2023-10-05 14:30:00' [^1] # 输出仅包含日期部分 formatted_date_only = now.strftime("%Y-%m-%d") # e.g., '2023-10-05' # 输出仅包含时间部分 formatted_time_only = now.strftime("%H:%M:%S") # e.g., '14:30:00' # 自定义格式:星期几、月份名称等 custom_formatted = now.strftime("%A, %B %d, %Y") # e.g., 'Thursday, October 05, 2023' ``` --- #### 2. `strptime`: 将字符串解析为日期时间对象 `strptime` 函数的作用正好相反于 `strftime`,它可以根据给定的格式模板将字符串解析为对应的日期时间对象。 ##### 基本语法 ```python datetime.strptime(string_to_parse, format_string) ``` - **string_to_parse**: 待解析的日期时间字符串。 - **format_string**: 定义输入字符串格式的模板。 ##### 示例代码 以下是一些典型的 `strptime` 使用场景: ```python from datetime import datetime # 解析完整的日期时间字符串 parsed_datetime = datetime.strptime("2023-10-05 14:30:00", "%Y-%m-%d %H:%M:%S") # e.g., datetime(2023, 10, 5, 14, 30) # 解析仅有日期部分的字符串 parsed_date = datetime.strptime("2023-10-05", "%Y-%m-%d").date() # e.g., date(2023, 10, 5) # 解析仅有时间部分的字符串 parsed_time = datetime.strptime("14:30:00", "%H:%M:%S").time() # e.g., time(14, 30, 0) # 处理自定义格式的字符串 custom_parsed = datetime.strptime("Thursday, October 05, 2023", "%A, %B %d, %Y") # e.g., datetime(2023, 10, 5) ``` --- #### 3. 常见格式化字符对照表 以下是常用的格式化字符及其含义: | 字符 | 描述 | 示例 | |------|--------------------------|---------------| | `%Y` | 四位数年份 | 2023 | | `%y` | 两位数年份 | 23 | | `%m` | 月份(零填充) | 01 到 12 | | `%d` | 日(零填充) | 01 到 31 | | `%H` | 小时(24小时制,零填充) | 00 到 23 | | `%I` | 小时(12小时制,零填充) | 01 到 12 | | `%M` | 分钟(零填充) | 00 到 59 | | `%S` | 秒(零填充) | 00 到 59 | | `%f` | 微妙 | 000000 到 999999| | `%a` | 星期缩写 | Mon | | `%A` | 星期全名 | Monday | | `%b` | 月份缩写 | Jan | | `%B` | 月份全名 | January | 更多信息可以参考官方文档[^1]。 --- #### 4. 实际应用场景对比 下面是一个综合的例子,展示了如何结合 `strftime` `strptime` 进行日期时间的操作: ```python from datetime import datetime # 输入字符串 input_str = "Oct 5, 2023" # 使用 strptime 将字符串解析为日期时间对象 dt_obj = datetime.strptime(input_str, "%b %d, %Y") # 使用 strftime 将日期时间对象格式化为新的字符串 output_str = dt_obj.strftime("%Y-%m-%d") print(f"Original String: {input_str}") # Original String: Oct 5, 2023 print(f"Parsed & Formatted Date: {output_str}") # Parsed & Formatted Date: 2023-10-05 ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值