strftime和strptime使用

本文详细介绍了C语言中用于时间日期操作的两个关键函数:strftime和strptime。strftime用于将时间日期结构转换为字符串格式,而strptime则相反,将字符串转换回时间日期结构。文章深入探讨了这两种函数的功能、参数及其应用实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


这两个函数都是时间日期的格式控制函数,在功能上看起来正好相反。strftime将一个tm结构格式化为一个字符串,strptime则是将一个字符串格式化为一个tm结构。
  • strftime

函数原型:size_t strftime(char *s,size_t maxsize,char *format,const struct tm *timeptr)
strftime函数对timeptr指向的tm结构所代表的时间和日期进行格式编排,其结果放在字符串s中。该字符串的长度被设置为(最少)maxsize个字符。格式字符串format用来对写入字符串的字符进行控制,它包含着将被传送到字符串里去的普通字符以及编排时间和日期格式的转换控制符。转换控制符见下表

转换控制符说明
%a星期几的简写形式
%A星期几的全称
%b月份的简写形式
%B月份的全称
%c日期和时间
%d月份中的日期,0-31
%H小时,00-23
%I12进制小时钟点,01-12
%j年份中的日期,001-366
%m年份中的月份,01-12
%M分,00-59
%p上午或下午
%S秒,00-60
%u星期几,1-7
%w星期几,0-6
%x当地格式的日期
%X当地格式的时间
%y年份中的最后两位数,00-99
%Y
%Z地理时区名称

具体的控制转换符说明可以查看man.

  • strptime

函数原型: char *strptime(const char *buf,const char *format,struct tm *timeptr)

format字符串的构建方式和strftime的format字符串完全一样。strptime返回一个指针,指向转换过程处理的最后一个字符后面的那个字符。

### Python 中 strftime 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` | 月份(零填充) | 0112 | | `%d` | 日(零填充) | 01 到 31 | | `%H` | 小时(24小时制,零填充) | 00 到 23 | | `%I` | 小时(12小时制,零填充) | 0112 | | `%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、付费专栏及课程。

余额充值