이 글에서는 Python의 날짜 및 시간 처리 모듈(date and datetime)을 주로 소개합니다. 편집자는 꽤 좋다고 생각하여 지금 공유하고 참고용으로 제공합니다. 에디터와 함께 구경하러 오세요
머리말
개발 작업에서는 다음과 같은 날짜와 시간을 사용해야 하는 경우가 많습니다.
로그 정보의 내용으로 출력
특정 기능의 실행 시간 계산
날짜 사용 로그 파일 이름 지정
기사 게시 또는 수정 시간을 기록하거나 표시
기타
Python은 날짜와 시간을 연산하기 위한 여러 내장 모듈(시간 모듈, 날짜/시간 모듈, 캘린더 모듈)을 제공합니다. time 모듈은 C 라이브러리를 호출하여 구현되므로 일부 플랫폼에서는 일부 메서드가 호출되지 않을 수 있지만, 이것이 제공하는 대부분의 인터페이스는 기본적으로 C 표준 라이브러리 time.h와 일치합니다. time 모듈에 비해 datetime 모듈이 제공하는 인터페이스는 더 직관적이고 사용하기 쉽고 더 강력합니다.
1. 관련 용어 설명
UTC 시간 협정 세계시, 그리니치 천문시라고도 함 시간. UTC 시간에 해당하는 것은 각 시간대의 현지 시간입니다. 동부 N 구역의 시간은 UTC 시간보다 N시간 빠릅니다. 따라서 UTC 시간 + N 시간은 동부 N 구역의 현지 시간입니다. UTC 시간보다 N시간 늦습니다. 즉, UTC 시간 - N시간은 서N 지역의 현지 시간입니다. 중국은 동부 8지역이므로 UTC 시간보다 8시간 빠릅니다. 8.
epoch 시간은 시간의 시작을 나타내는 특정 시간이며, 이 시점의 값은 Unix의 경우 플랫폼에 따라 다릅니다. -01 -01 00:00:00 UTC.
timestamp(Timestamp) Unix 시간 또는 POSIX 시간이라고도 하며 1970년 1월 1일 GMT 이후의 시간을 나타내는 시간 표현입니다. 0:00:00 이후 경과된 값은 float 유형입니다. 그러나 프로그래밍 언어의 일부 관련 메서드는 초 수를 반환합니다(Python의 경우도 마찬가지입니다). 이에 대해서는 해당 메서드의 문서를 참조해야 합니다. 타임스탬프는 차이 값이며 해당 값은 시간대와 관련이 없습니다.
2. 시간 표현
일반적인 시간 표현은
타임 스탬프
형식화된 시간문자열
파이썬에는 도 있습니다. :
time 모듈의 time.struct_time
datetime 모듈의 datetime 클래스
datetime 모듈의 datetime 클래스에 대해서는 아래에서 time.struct_time에 대해 간략하게 설명하겠습니다.
time.struct_time에는 다음 속성이 포함되어 있습니다.
subscript/색인
|
속성 이름 | 설명 | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | tm_year | 연도(예: 2017) | ||||||||||||||||||||||||||||||
1 | tm_mon | 월, 값 범위는 [1, 12] | ||||||||||||||||||||||||||||||
tm_mday | 일, 값 범위는 [1-31] | |||||||||||||||||||||||||||||||
3 | tm_hour | hour, 값 범위는 [0-23] | ||||||||||||||||||||||||||||||
4 | tm_min | 분, 값 범위는 [0, 59] | ||||||||||||||||||||||||||||||
5 | tm_sec | 초, 값 범위는 [0, 61] | ||||||||||||||||||||||||||||||
6 | tm_wday | 요일, 값 범위는 [0-6], 0은 월요일을 의미합니다 | ||||||||||||||||||||||||||||||
7 | tm_yday | 일, 값 범위는 [1, 366] | ||||||||||||||||||||||||||||||
8 | tm_isdst | 일광 절약 시간인지 여부에 관계없이 가능한 값은 0, 1 또는 -1입니다. |
속성 값을 얻는 방법은 두 가지가 있습니다.
t와 같이 첨자/색인을 통해 각 요소의 값을 얻는 특별한 순서의 불변 시퀀스라고 생각하면 됩니다. [0]
t.tm_year와 같은 .attribute 이름을 통해 각 요소의 값을 가져올 수도 있습니다.
struct_time 인스턴스의 각 속성은 읽기 전용이며 수정할 수 없다는 점에 유의해야 합니다.
3. 시간 모듈
시간 모듈은 주로 시간에 관련된 다양한 정보를 제공하는 모듈입니다. 기능.
1. 함수 목록
메서드/속성 | 설명 | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
time.altzone | UTC 시간과의 시간 차이를 초 단위로 반환합니다(서부 지역의 값은 양수이고 동부 지역의 가치는 부담입니다). 이는 현지 DST 시간대의 오프셋을 나타내며 일광이 0이 아닌 경우에만 사용됩니다. | ||||||||||||||||||||||||||
time.clock() | 현재 프로세스에서 소비한 프로세서 실행 시간(초)을 반환합니다(휴면 시간 제외). 값은 소수입니다. ; Python3.3 메소드가 time.process_time()으로 변경되었습니다. | ||||||||||||||||||||||||||
time.asctime([t]) | 시간을 다음 형식으로 변환합니다. tuple 또는 struct_time((gmtime() 및 localtime() 메서드를 통해 얻을 수 있음)을 "Fri Aug 19 11:14:16 2016" 형식의 24자 시간 문자열로 변환합니다. 매개변수 t가 제공되지 않으면 localtime()의 반환 값이 매개변수로 사용됩니다. | ||||||||||||||||||||||||||
time.ctime([secs]) | 함수는 위와 동일하며, 초 타임스탬프로 표시되는 시간을 시간을 나타내는 문자로 변환합니다. 현재 현지 시간 문자열. 매개변수 secs가 제공되지 않거나 값이 None인 경우 time() 메서드의 반환 값이 기본값으로 사용됩니다. ctime(초)는 asctime(localtime(secs))과 동일합니다. | ||||||||||||||||||||||||||
time.time() | 타임스탬프를 반환합니다(1970-1-1 이후) 0:00:00(0:00:00 이후의 초 수) | ||||||||||||||||||||||||||
time.localtime([secs]) | 현지 시간을 반환합니다. 지정된 타임스탬프에 해당하는 struct_time객체
|
||||||||||||||||||||||||||
시간. localtime (time.time() + n*3600) | n 시간 후 현지 시간의 struct_time 객체 형식을 반환합니다(crontab과 유사한 기능을 구현하는 데 사용할 수 있음) | ||||||||||||||||||||||||||
time.gmtime([secs]) | 지정된 타임스탬프에 해당하는 UTC 시간의 struct_time 객체 형식을 반환합니다(현재 현지 시간과 8시간 다름) | ||||||||||||||||||||||||||
time.gmtime(time.time() + n*3600) | n시간 후 UTC 시간의 struct_time 객체를 반환합니다(내부 속성은 . 속성 이름) 형식 td> | ||||||||||||||||||||||||||
time.strptime(time_str, time_format_str) | 시간 문자열을 다음과 같은 struct_time 시간 객체로 변환합니다: time.strptime( '2017-01-13 17 :07', '%Y-%m-%d %H:%M') | ||||||||||||||||||||||||||
time.mktime(struct_time_instance) | struct_time 객체 변경 인스턴스를 타임스탬프로 변환 | ||||||||||||||||||||||||||
time.strftime(time_format_str, struct_time_instance) | struct_time 객체 인스턴스를 문자열로 변환 |
2. 운동
타임스탬프 형식으로 시간 가져오기
>>> time.time() 1486188022.862
시간 가져오기 struct_time 형식 Time
>>> time.localtime() time.struct_time(tm_year=2017, tm_mon=2, tm_mday=4, tm_hour=14, tm_min=2, tm_sec=34, tm_wday=5, tm_yday=35, tm_isdst=0) >>> time.gmtime() time.struct_time(tm_year=2017, tm_mon=2, tm_mday=4, tm_hour=6, tm_min=2, tm_sec=56, tm_wday=5, tm_yday=35, tm_isdst=0)
문자열 형식으로 시간 가져오기
>>> time.ctime() 'Sat Feb 04 14:06:42 2017' >>> time.asctime() 'Sat Feb 04 14:06:47 2017'
타임스탬프 형식을 struct_time 형식으로 시간
>>> t1 = time.time() >>> print(t1) 1486188476.9 >>> t2 = time.localtime(t1) >>> print(t2) time.struct_time(tm_year=2017, tm_mon=2, tm_mday=4, tm_hour=14, tm_min=7, tm_sec=56, tm_wday=5, tm_yday=35, tm_isdst=0) >>> t3 = time.gmtime(t1) >>> print(t3) time.struct_time(tm_year=2017, tm_mon=2, tm_mday=4, tm_hour=6, tm_min=7, tm_sec=56, tm_wday=5, tm_yday=35, tm_isdst=0) >>>
문자열 형식을 struct_time 형식으로 시간
>>> time.strptime('Sat Feb 04 14:06:42 2017') time.struct_time(tm_year=2017, tm_mon=2, tm_mday=4, tm_hour=14, tm_min=6, tm_sec=42, tm_wday=5, tm_yday=35, tm_isdst=-1) >>> time.strptime('Sat Feb 04 14:06:42 2017', '%a %b %d %H:%M:%S %Y') time.struct_time(tm_year=2017, tm_mon=2, tm_mday=4, tm_hour=14, tm_min=6, tm_sec=42, tm_wday=5, tm_yday=35, tm_isdst=-1) >>> time.strptime('2017-02-04 14:12', '%Y-%m-%d %H:%M') time.struct_time(tm_year=2017, tm_mon=2, tm_mday=4, tm_hour=14, tm_min=12, tm_sec=0, tm_wday=5, tm_yday=35, tm_isdst=-1) >>> time.strptime('2017/02/04 14:12', '%Y/%m/%d %H:%M') time.struct_time(tm_year=2017, tm_mon=2, tm_mday=4, tm_hour=14, tm_min=12, tm_sec=0, tm_wday=5, tm_yday=35, tm_isdst=-1) >>> time.strptime('201702041412', '%Y%m%d%H%M') time.struct_time(tm_year=2017, tm_mon=2, tm_mday=4, tm_hour=14, tm_min=12, tm_sec=0, tm_wday=5, tm_yday=35, tm_isdst=-1)
struct_time 형식을 문자열 형식으로 시간
>>> time.strftime('%Y-%m-%d %H:%M', time.localtime()) '2017-02-04 14:19' struct_time格式转时间戳格式时间 >>> time.mktime(time.localtime()) 1486189282.0
시간 형식 변환
ctime([secs]) 메소드를 통해 타임스탬프 형식의 시간과 문자열 형식의 시간을 변환할 수 있지만 문자열 형식은 중국 국내 사정에 적합하지 않습니다. 따라서 전체적으로 직접 변환할 수는 없습니다. struct_time을 중개자로 사용해야 합니다.
설명: 위의 '%H'입니다. :%M:%S '는 '%X'로 직접 대체될 수 있습니다.
4. Datetime 모듈
datetime 모듈은 날짜와 시간을 간단하고 복잡한 방식으로 처리하는 클래스를 제공합니다. 날짜 및 시간 알고리즘을 지원하지만 구현의 초점은 출력 형식화 및 작업을 위한 효율적인 속성 추출 기능을 제공하는 것입니다.
1. datetime 모듈에 정의된 클래스
datetime 모듈은 다음 클래스를 정의합니다.
클래스 이름 | 설명 | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
datetime.date | 는 날짜를 나타냅니다. 연도, 월, 일|||||||||||||||
datetime.time | 는 시간을 나타냅니다. : :시, 분, 초, 마이크로초 | ||||||||||||||
datetime.datetime | 날짜 및 시간을 나타냅니다 | ||||||||||||||
datetime.timedelta | 두 날짜, 시간, 날짜/시간 인스턴스 사이의 시간 간격을 나타내며 해상도(최소 단위)는 마이크로초에 도달할 수 있습니다. | tr >||||||||||||||
datetime.tzinfo | 시간대 관련 정보 객체에 대한 추상 기본 클래스입니다. 날짜/시간 및 시간 클래스에서 사용자 정의 시간 조정을 제공하는 데 사용됩니다. | ||||||||||||||
datetime.timezone | Python 3.2 tzinfo 추상 기본 클래스를 구현하고 UTC로부터의 고정 오프셋을 나타내는 클래스인
|
常量名称 | 描述 |
---|---|
datetime.MINYEAR | datetime.date或datetime.datetime对象所允许的年份的最小值,值为1 |
datetime.MAXYEAR | datetime.date或datetime.datetime对象所允许的年份的最大值,只为9999 |
3. Datetime.date 클래스
datetime.date 클래스 정의
class datetime.date(year, month, day)
년, 월, 일은 모두 필수 파라미터이며, 각 파라미터의 값 범위는
参数名称 | 取值范围 |
---|---|
year | [MINYEAR, MAXYEAR] |
month | [1, 12] |
day | [1, 指定年份的月份中的天数] |
클래스 메서드 및 속성
类方法/属性名称 | 描述 |
---|---|
date.max | date对象所能表示的最大日期:9999-12-31 |
date.min | date对象所能表示的最小日志:00001-01-01 |
date.resoluation | date对象表示的日期的最小单位:天 |
date.today() | 返回一个表示当前本地日期的date对象 |
date.fromtimestamp(timestamp) | 根据跟定的时间戳,返回一个date对象 |
对象方法和属性
对象方法/属性名称 | 描述 |
---|---|
d.year | 年 |
d.month | 月 |
d.day | 日 |
d.replace(year[, month[, day]]) | 生成并返回一个新的日期对象,原日期对象不变 |
d.timetuple() | 返回日期对应的time.struct_time对象 |
d.toordinal() | 返回日期是是自 0001-01-01 开始的第多少天 |
d.weekday() | 返回日期是星期几,[0, 6],0表示星期一 |
d.isoweekday() | 返回日期是星期几,[1, 7], 1表示星期一 |
d.isocalendar() | 返回一个元组,格式为:(year, weekday, isoweekday) |
d.isoformat() | 返回‘YYYY-MM-DD'格式的日期字符串 |
d.strftime(format) | 返回指定格式的日期字符串,与time模块的strftime(format, struct_time)功能相同 |
实例
>>> import time >>> from datetime import date >>> >>> date.max datetime.date(9999, 12, 31) >>> date.min datetime.date(1, 1, 1) >>> date.resolution datetime.timedelta(1) >>> date.today() datetime.date(2017, 2, 4) >>> date.fromtimestamp(time.time()) datetime.date(2017, 2, 4) >>> >>> d = date.today() >>> d.year 2017 >>> d.month 2 >>> d.day 4 >>> d.replace(2016) datetime.date(2016, 2, 4) >>> d.replace(2016, 3) >>> d.replace(2016, 3, 2) datetime.date(2016, 3, 2) >>> d.timetuple() time.struct_time(tm_year=2017, tm_mon=2, tm_mday=4, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=35, tm_isdst=-1) >>> d.toordinal() 736364 >>> d.weekday() 5 >>> d.isoweekday() 6 >>> d.isocalendar() (2017, 5, 6) >>> d.isoformat() '2017-02-04' >>> d.ctime() 'Sat Feb 4 00:00:00 2017' >>> d.strftime('%Y/%m/%d') '2017/02/04'
4. datetime.time类
time类的定义
class datetime.time(hour, [minute[, second, [microsecond[, tzinfo]]]])
hour为必须参数,其他为可选参数。各参数的取值范围为:
参数名称 | 取值范围 |
---|---|
hour | [0, 23] |
minute | [0, 59] |
second | [0, 59] |
microsecond | [0, 1000000] |
tzinfo | tzinfo的子类对象,如timezone类的实例 |
类方法和属性
类方法/属性名称 | 描述 |
---|---|
time.max | time类所能表示的最大时间:time(23, 59, 59, 999999) |
time.min | time类所能表示的最小时间:time(0, 0, 0, 0) |
time.resolution | 时间的最小单位,即两个不同时间的最小差值:1微秒 |
对象方法和属性
对象方法/属性名称 | 描述 |
---|---|
t.hour | 时 |
t.minute | 分 |
t.second | 秒 |
t.microsecond | 微秒 |
t.tzinfo | 返回传递给time构造方法的tzinfo对象,如果该参数未给出,则返回None |
t.replace(hour[, minute[, second[, microsecond[, tzinfo]]]]) | 生成并返回一个新的时间对象,原时间对象不变 |
t.isoformat() | 返回一个‘HH:MM:SS.%f'格式的时间字符串 |
t.strftime() | 返回指定格式的时间字符串,与time模块的strftime(format, struct_time)功能相同 |
实例
>>> from datetime import time >>> >>> time.max datetime.time(23, 59, 59, 999999) >>> time.min datetime.time(0, 0) >>> time.resolution datetime.timedelta(0, 0, 1) >>> >>> t = time(20, 5, 40, 8888) >>> t.hour 20 >>> t.minute 5 >>> t.second 40 >>> t.microsecond 8888 >>> t.tzinfo >>> >>> t.replace(21) datetime.time(21, 5, 40, 8888) >>> t.isoformat() '20:05:40.008888' >>> t.strftime('%H%M%S') '200540' >>> t.strftime('%H%M%S.%f') '200540.008888'
5. datetime.datetime类
datetime类的定义
代码如下:
class datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None)
year, month 和 day是必须要传递的参数, tzinfo可以是None或tzinfo子类的实例。
各参数的取值范围为:
参数名称 | 取值范围 |
---|---|
year | [MINYEAR, MAXYEAR] |
month | [1, 12] |
day | [1, 指定年份的月份中的天数] |
hour | [0, 23] |
minute | [0, 59] |
second | [0, 59] |
microsecond | [0, 1000000] |
tzinfo | tzinfo的子类对象,如timezone类的实例 |
如果一个参数超出了这些范围,会引起ValueError异常。
类方法和属性
类方法/属性名称 | 描述 |
---|---|
datetime.today() | 返回一个表示当前本期日期时间的datetime对象 |
datetime.now([tz]) | 返回指定时区日期时间的datetime对象,如果不指定tz参数则结果同上 |
datetime.utcnow() | 返回当前utc日期时间的datetime对象 |
datetime.fromtimestamp(timestamp[, tz]) | 根据指定的时间戳创建一个datetime对象 |
datetime.utcfromtimestamp(timestamp) | 根据指定的时间戳创建一个datetime对象 |
datetime.combine(date, time) | 把指定的date和time对象整合成一个datetime对象 |
datetime.strptime(date_str, format) | 将时间字符串转换为datetime对象 |
对象方法和属性
对象方法/属性名称 | 描述 |
---|---|
dt.year, dt.month, dt.day | 年、月、日 |
dt.hour, dt.minute, dt.second | 时、分、秒 |
dt.microsecond, dt.tzinfo | 微秒、时区信息 |
dt.date() | 获取datetime对象对应的date对象 |
dt.time() | 获取datetime对象对应的time对象, tzinfo 为None |
dt.timetz() | 获取datetime对象对应的time对象,tzinfo与datetime对象的tzinfo相同 |
dt.replace([year[, month[, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]]]]]) | 生成并返回一个新的datetime对象,如果所有参数都没有指定,则返回一个与原datetime对象相同的对象 |
dt.timetuple() | 返回datetime对象对应的tuple(不包括tzinfo) |
dt.utctimetuple() | 返回datetime对象对应的utc时间的tuple(不包括tzinfo) |
dt.toordinal() | 同date对象 |
dt.weekday() | 同date对象 |
dt.isocalendar() | 同date独享 |
dt.isoformat([sep]) | 返回一个‘%Y-%m-%d |
dt.ctime() | 等价于time模块的time.ctime(time.mktime(d.timetuple())) |
dt.strftime(format) | 返回指定格式的时间字符串 |
实例
>>> from datetime import datetime, timezone >>> >>> datetime.today() datetime.datetime(2017, 2, 4, 20, 44, 40, 556318) >>> datetime.now() datetime.datetime(2017, 2, 4, 20, 44, 56, 572615) >>> datetime.now(timezone.utc) datetime.datetime(2017, 2, 4, 12, 45, 22, 881694, tzinfo=datetime.timezone.utc) >>> datetime.utcnow() datetime.datetime(2017, 2, 4, 12, 45, 52, 812508) >>> import time >>> datetime.fromtimestamp(time.time()) datetime.datetime(2017, 2, 4, 20, 46, 41, 97578) >>> datetime.utcfromtimestamp(time.time()) datetime.datetime(2017, 2, 4, 12, 46, 56, 989413) >>> datetime.combine(date(2017, 2, 4), t) datetime.datetime(2017, 2, 4, 20, 5, 40, 8888) >>> datetime.strptime('2017/02/04 20:49', '%Y/%m/%d %H:%M') datetime.datetime(2017, 2, 4, 20, 49) >>> dt = datetime.now() >>> dt datetime.datetime(2017, 2, 4, 20, 57, 0, 621378) >>> dt.year 2017 >>> dt.month 2 >>> dt.day 4 >>> dt.hour 20 >>> dt.minute 57 >>> dt.second 0 >>> dt.microsecond 621378 >>> dt.tzinfo >>> dt.timestamp() 1486213020.621378 >>> dt.date() datetime.date(2017, 2, 4) >>> dt.time() datetime.time(20, 57, 0, 621378) >>> dt.timetz() datetime.time(20, 57, 0, 621378) >>> dt.replace() datetime.datetime(2017, 2, 4, 20, 57, 0, 621378) >>> dt.replace(2016) datetime.datetime(2016, 2, 4, 20, 57, 0, 621378) >>> dt.timetuple() time.struct_time(tm_year=2017, tm_mon=2, tm_mday=4, tm_hour=20, tm_min=57, tm_sec=0, tm_wday=5, tm_yday=35, tm_isdst=-1) >>> dt.utctimetuple() time.struct_time(tm_year=2017, tm_mon=2, tm_mday=4, tm_hour=20, tm_min=57, tm_sec=0, tm_wday=5, tm_yday=35, tm_isdst=0) >>> dt.toordinal() 736364 >>> dt.weekday() 5 >>> dt.isocalendar() (2017, 5, 6) >>> dt.isoformat() '2017-02-04T20:57:00.621378' >>> dt.isoformat(sep='/') '2017-02-04/20:57:00.621378' >>> dt.isoformat(sep=' ') '2017-02-04 20:57:00.621378' >>> dt.ctime() 'Sat Feb 4 20:57:00 2017' >>> dt.strftime('%Y%m%d %H:%M:%S.%f') '20170204 20:57:00.621378'
6. 使用datetime.datetime类对时间戳与时间字符串进行转换
7. datetime.timedelta类
timedelta对象表示连个不同时间之间的差值。如果使用time模块对时间进行算术运行,只能将字符串格式的时间 和 struct_time格式的时间对象 先转换为时间戳格式,然后对该时间戳加上或减去n秒,最后再转换回struct_time格式或字符串格式,这显然很不方便。而datetime模块提供的timedelta类可以让我们很方面的对datetime.date, datetime.time和datetime.datetime对象做算术运算,且两个时间之间的差值单位也更加容易控制。
这个差值的单位可以是:天、秒、微秒、毫秒、分钟、小时、周。
datetime.timedelta类的定义
代码如下:
class datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, hours=0, weeks=0)
所有参数都是默认参数,因此都是可选参数。参数的值可以是整数或浮点数,也可以是正数或负数。内部值存储days、seconds 和 microseconds,其他所有参数都将被转换成这3个单位:
1毫秒转换为1000微秒
1分钟转换为60秒
1小时转换为3600秒
1周转换为7天
然后对这3个值进行标准化,使得它们的表示是唯一的:
microseconds : [0, 999999]
seconds : [0, 86399]
days : [-999999999, 999999999]
类属性
类属性名称 | 描述 |
---|---|
timedelta.min | timedelta(-999999999) |
timedelta.max | timedelta(days=999999999, hours=23, minutes=59, seconds=59, microseconds=999999) |
timedelta.resolution | timedelta(microseconds=1) |
实例方法和属性
实例方法/属性名称 | 描述 |
---|---|
td.days | 天 [-999999999, 999999999] |
td.seconds | 秒 [0, 86399] |
td.microseconds | 微秒 [0, 999999] |
td.total_seconds() | 时间差中包含的总秒数,等价于: td / timedelta(seconds=1) |
方法/属性 | 描述 |
---|---|
datetime.datetime.now() | 返回当前本地时间(datetime.datetime对象实例) |
datetime.datetime.fromtimestamp(timestamp) | 返回指定时间戳对应的时间(datetime.datetime对象实例) |
datetime.timedelta() | 返回一个时间间隔对象,可以直接与datetime.datetime对象做加减操作 |
实例
>>> import datetime >>> >>> datetime.timedelta(365).total_seconds() # 一年包含的总秒数 31536000.0 >>> dt = datetime.datetime.now() >>> dt + datetime.timedelta(3) # 3天后 datetime.datetime(2017, 2, 8, 9, 39, 40, 102821) >>> dt + datetime.timedelta(-3) # 3天前 datetime.datetime(2017, 2, 2, 9, 39, 40, 102821) >>> dt + datetime.timedelta(hours=3) # 3小时后 datetime.datetime(2017, 2, 5, 12, 39, 40, 102821) >>> dt + datetime.timedelta(hours=-3) # 3小时前 datetime.datetime(2017, 2, 5, 6, 39, 40, 102821) >>> dt + datetime.timedelta(hours=3, seconds=30) # 3小时30秒后 datetime.datetime(2017, 2, 5, 12, 40, 10, 102821)
五、时间格式码
time模块的struct_time以及datetime模块的datetime、date、time类都提供了strftime()方法,该方法可 以输出一个指定格式的时间字符串。具体格式由一系列的格式码(格式字符)组成,Python最终调用的是各个平台C库的strftme()函数,因此各平台对全套格式码的支持会有所不同,具体情况需要参考该平台上的strftime(3)文档。下面列出了C标准(1989版)要求的所有格式码,它们在所有标准C实现的平台上都可以工作:
六、总结
那么Python中处理时间时,使用time模块好,还是用datetime模块好呢?就我个人而言,datetime模块基本上可以满足需要,且用起来确实比较方便。对于time模块,我只是在取当前时间的时间戳时会用到time.time()方法,当然也可以通过datetime.datetime.now().timestamp()来获取,只是显得复杂一点。我觉得还是看个人习惯吧,没有什么绝对的好坏之分。
【相关推荐】
1. Python免费视频教程
2. Python学习手册
위 내용은 Python 날짜/시간 및 날짜 모듈의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!