前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python字符串转换为日期时间– strptime()「建议收藏」

Python字符串转换为日期时间– strptime()「建议收藏」

作者头像
全栈程序员站长
发布2022-09-05 10:42:33
2.4K0
发布2022-09-05 10:42:33
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

We can convert a string to datetime using strptime() function. This function is available in datetime and time modules to parse a string to datetime and time objects respectively.

我们可以使用strptime()函数将字符串转换为datetime。 datetimetime模块中提供了此功能,可分别将字符串解析为datetime和time对象。

Python strptime() (Python strptime())

Python strptime() is a class method in datetime class. Its syntax is:

Python strptime()是datetime类中的类方法。 其语法为:

代码语言:javascript
复制
datetime.strptime(date_string, format)

Both the arguments are mandatory and should be string. This function is exactly opposite of strftime() function, which converts datetime object to a string.

这两个参数都是强制性的,应为字符串。 此函数与strftime()函数完全相反,该函数将datetime对象转换为字符串。

We have the similar function available in time module too, where its syntax is:

我们在时间模块中也提供了类似的功能,其语法为:

代码语言:javascript
复制
time.strptime(time_string[, format])

Here the function returns struct_time object. If format string is not provided, it defaults to “%a %b %d %H:%M:%S %Y” which matches the formatting returned by ctime() function.

在这里,该函数返回struct_time对象。 如果未提供格式字符串,则默认为“%a%b%d%H:%M:%S%Y”,它与ctime()函数返回的格式匹配。

If the input string cannot be parsed according to the provided format, then ValueError is raised. The exception message provides clear details about the issue in parsing.

如果无法根据提供的格式解析输入字符串,则引发ValueError 。 异常消息提供了有关解析中问题的清晰详细信息。

Python strptime()格式指令 (Python strptime() format directives)

Following table contains most of the commonly used format directives.

下表包含大多数常用的格式指令。

.tg {border-collapse:collapse;border-spacing:0;border-color:#999;}<br /> .tg td{font-family:Arial, sans-serif;font-size:14px;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:#999;color:#444;background-color:#F7FDFA;}<br /> .tg th{font-family:Arial, sans-serif;font-size:14px;font-weight:normal;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:#999;color:#fff;background-color:#26ADE4;}<br /> .tg .tg-phtq{background-color:#D2E4FC;border-color:inherit;text-align:left;vertical-align:top}<br /> .tg .tg-c51l{background-color:#D2E4FC;border-color:inherit;text-align:left}<br /> .tg .tg-xldj{border-color:inherit;text-align:left}<br /> .tg .tg-0pky{border-color:inherit;text-align:left;vertical-align:top}<br /> .tg {border-collapse:collapse;border-spacing:0;border-color:#999;}<br /> .tg td{font-family:Arial, sans-serif;font-size:14px;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:#999;color:#444;background-color:#F7FDFA;}<br /> .tg th{font-family:Arial, sans-serif;font-size:14px;font-weight:normal;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:#999;color:#fff;background-color:#26ADE4;}<br /> .tg .tg-phtq{background-color:#D2E4FC;border-color:inherit;text-align:left;vertical-align:top}<br /> .tg .tg-c51l{background-color:#D2E4FC;border-color:inherit;text-align:left}<br /> .tg .tg-xldj{border-color:inherit;text-align:left}<br /> .tg .tg-0pky{border-color:inherit;text-align:left;vertical-align:top}<br />

Directive

Description

Example Output

%a

Weekday as locale’s abbreviated name.

Sun, Mon, …, Sat (en_US) So, Mo, …, Sa (de_DE)

%A

Weekday as locale’s full name.

Sunday, Monday, …, Saturday (en_US) Sonntag, Montag, …, Samstag (de_DE)

%w

Weekday as a decimal number, where 0 is Sunday and 6 is Saturday.

0, 1, 2, 3, 4, 5, 6

%d

Day of the month as a zero-padded decimal number.

01, 02, …, 31

%b

Month as locale’s abbreviated name.

Jan, Feb, …, Dec (en_US) Jan, Feb, …, Dez (de_DE)

%B

Month as locale’s full name.

January, February, …, December (en_US) Januar, Februar, …, Dezember (de_DE)

%m

Month as a zero-padded decimal number.

01, 02 … 12

%y

Year without century as a zero-padded decimal number.

01, 02, … 99

%Y

Year with century as a decimal number.

0001, 0002, … , 9999

%H

Hour (24-hour clock) as a zero-padded decimal number.

01, 02, … , 23

%I

Hour (12-hour clock) as a zero-padded decimal number.

01, 02, … , 12

%p

Locale’s equivalent of either AM or PM.

AM, PM (en_US) am, pm (de_DE)

%M

Minute as a zero-padded decimal number.

01, 02, … , 59

%S

Second as a zero-padded decimal number.

01, 02, … , 59

%f

Microsecond as a decimal number, zero-padded on the left.

000000, 000001, …, 999999 Not applicable with time module.

%z

UTC offset in the form ±HHMM[SS] (empty string if the object is naive).

(empty), +0000, -0400, +1030

%Z

Time zone name (empty string if the object is naive).

(empty), UTC, IST, CST

%j

Day of the year as a zero-padded decimal number.

001, 002, …, 366

%U

Week number of the year (Sunday as the first day of the week) as a zero padded decimal number. All days in a new year preceding the first Sunday are considered to be in week 0.

00, 01, …, 53

%W

Week number of the year (Monday as the first day of the week) as a decimal number. All days in a new year preceding the first Monday are considered to be in week 0.

00, 01, …, 53

%c

Locale’s appropriate date and time representation.

Tue Aug 16 21:30:00 1988 (en_US) Di 16 Aug 21:30:00 1988 (de_DE)

%x

Locale’s appropriate date representation.

08/16/88 (None) 08/16/1988 (en_US) 16.08.1988 (de_DE)

%X

Locale’s appropriate time representation.

21:30:00 (en_US) 21:30:00 (de_DE)

%%

A literal ‘%’ character.

%

指示

描述

示例输出

%一个

工作日为语言环境的缩写名称。

周日,周一,…,周六(en_US) 因此,Mo,…,Sa(de_DE)

%一个

工作日为语言环境的全名。

周日,周一,…,周六(zh_CN) 桑塔格,蒙塔格,…,萨姆斯塔格(de_DE)

%w

以十进制数表示的工作日,其中0是星期日,6是星期六。

0、1、2、3、4、5、6

%d

月份中的一天,以零填充的十进制数字表示。

01,02,…,31

%b

月作为语言环境的缩写名称。

一月,二月,…,十二月(en_US) 一月,二月,…,德兹(de_DE)

%B

月作为语言环境的全名。

一月,二月,…,十二月(zh_CN) Januar,Februar,…,Dezember(de_DE)

%m

以零填充的十进制数字表示的月份。

01,02…12

%y

无世纪的年份,为零填充的十进制数字。

01,02,…99

%Y

以世纪作为十进制数字的年份。

0001、0002,…,9999

%H

小时(24小时制),为补零的十进制数字。

01,02,…,23

%一世

小时(12小时制),为零填充的十进制数字。

01,02,…,12

%p

相当于AM或PM的语言环境。

上午,下午(en_US) 上午,下午(de_DE)

%M

分钟,为零填充的十进制数字。

01,02,…,59

%S

第二个为零填充的十进制数。

01,02,…,59

%F

微秒,十进制数,在左侧补零。

000000,000001,…,999999 不适用于时间模块。

%z

UTC偏移量,格式为±HHMM [SS](如果对象是天真对象,则为空字符串)。

(空),+ 0000,-0400,+ 1030

%Z

时区名称(如果对象是天真对象,则为空字符串)。

(空),UTC,IST,CST

%j

一年中的一天,为零填充的十进制数字。

001,002,…,366

%U

一年中的周号(星期日为一周的第一天),以零填充的十进制数表示。 新年中第一个星期日之前的所有天均视为第0周。

00,01,…,53

%W

一年中的星期数(星期一为一周的第一天),以十进制数表示。 第一个星期一之前的新的一年中的所有天均视为在第0周。

00,01,…,53

%C

语言环境的适当日期和时间表示。

星期二八月16 21:30:00 1988(zh_CN) Di 16 Aug 21:30:00 1988(de_DE)

%X

语言环境的适当日期表示形式。

88年8月16日(无) 1988年8月16日(zh_CN) 1988年8月16日(de_DE)

%X

语言环境的适当时间表示形式。

21:30:00(zh_CN) 21:30:00(de_DE)

%%

文字“%”字符。

Python strptime()示例 (Python strptime() examples)

Let’s look into some specific examples of strptime() function to convert string to datetime and time objects.

我们来看一些将字符串转换为日期时间和时间对象的strptime()函数的特定示例。

字符串到日期时间 (String to datetime)

代码语言:javascript
复制
from datetime import datetime

datetime_str = '09/19/18 13:55:26'

datetime_object = datetime.strptime(datetime_str, '%m/%d/%y %H:%M:%S')

print(type(datetime_object))
print(datetime_object)  # printed in default format

Output:

输出:

代码语言:javascript
复制
<class 'datetime.datetime'>
2018-09-19 13:55:26

字符串到日期对象 (String to date object)

We can use date() function alongwith strptime() function to convert string to date object.

我们可以使用date()函数和strptime()函数将字符串转换为date对象。

代码语言:javascript
复制
date_str = '09-19-2018'

date_object = datetime.strptime(date_str, '%m-%d-%Y').date()
print(type(date_object))
print(date_object)  # printed in default formatting

Output:

输出:

代码语言:javascript
复制
<class 'datetime.date'>
2018-09-19

时间对象的字符串 (String to time object)

We can use time() function alongwith strptime() function to convert string to time object.

我们可以使用time()函数和strptime()函数将字符串转换为时间对象。

代码语言:javascript
复制
time_str = '13::55::26'
time_object = datetime.strptime(time_str, '%H::%M::%S').time()
print(type(time_object))
print(time_object)

Output:

输出:

代码语言:javascript
复制
<class 'datetime.time'>
13:55:26

Python时间strptime()示例 (Python time strptime() example)

Let’s see some examples of using time module strptime() function.

我们来看一些使用时间模块strptime()函数的示例。

代码语言:javascript
复制
import time

time_obj = time.strptime(time_str, '%H::%M::%S')
print(type(time_obj))
print(time_obj)

# default formatting - "%a %b %d %H:%M:%S %Y"
print(time.strptime('Wed Sep 19 14:55:02 2018'))

Output:

输出:

代码语言:javascript
复制
<class 'time.struct_time'>
time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=13, tm_min=55, tm_sec=26, tm_wday=0, tm_yday=1, tm_isdst=-1)
time.struct_time(tm_year=2018, tm_mon=9, tm_mday=19, tm_hour=14, tm_min=55, tm_sec=2, tm_wday=2, tm_yday=262, tm_isdst=-1)

Python strptime()ValueError示例 (Python strptime() ValueError Example)

We can use try-except block to catch parsing exception and perform corrective actions.

我们可以使用try-except块来捕获解析异常并执行纠正措施。

代码语言:javascript
复制
datetime_str = '09/19/18 13:55:26'

try:
    datetime_object = datetime.strptime(datetime_str, '%m/%d/%y')
except ValueError as ve:
    print('ValueError Raised:', ve)

time_str = '99::55::26'

try:
    time_object = time.strptime(time_str, '%H::%M::%S')
except ValueError as e:
    print('ValueError:', e)

Output:

输出:

代码语言:javascript
复制
ValueError Raised: unconverted data remains:  13:55:26
ValueError: time data '99::55::26' does not match format '%H::%M::%S'

Notice that the ValueError message clearly explains the root cause of the parsing exception.

请注意,ValueError消息清楚地解释了解析异常的根本原因。

Python使用区域设置将字符串转换为日期时间 (Python Convert String to Datetime with locale)

Let’s look at an example where a locale-specific string will be converted to datetime object. We will use locale module to set the locale to be used by python.

让我们看一个示例,其中将特定于语言环境的字符串转换为datetime对象。 我们将使用语言环境模块来设置要由python使用的语言环境。

代码语言:javascript
复制
import locale

locale.setlocale(locale.LC_ALL, 'de_DE')
date_str_de_DE = '10-Dezember-2018 Montag'  # de_DE locale
datetime_object = datetime.strptime(date_str_de_DE, '%d-%B-%Y %A')
print(datetime_object)

Output: 2018-12-10 00:00:00

输出: 2018-12-10 00:00:00

GitHub Repository. GitHub存储库中检出完整的python脚本和更多Python示例。

References: datetime strptime(), time strptime()

参考: datetime strptime()时间strptime()

翻译自: https://www.journaldev.com/23365/python-string-to-datetime-strptime

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/137316.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年6月2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Python strptime() (Python strptime())
  • Python strptime()格式指令 (Python strptime() format directives)
  • Python strptime()示例 (Python strptime() examples)
    • 字符串到日期时间 (String to datetime)
      • 字符串到日期对象 (String to date object)
        • 时间对象的字符串 (String to time object)
          • Python时间strptime()示例 (Python time strptime() example)
            • Python strptime()ValueError示例 (Python strptime() ValueError Example)
            • Python使用区域设置将字符串转换为日期时间 (Python Convert String to Datetime with locale)
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档