一.time模块
time模块提供各种操作时间的函数
一般有两种表示时间的方式:
第一种是时间戳的方式(相对于1970.1.1 00:00:00以秒计算的偏移量),时间戳是惟一的
#当前时间的时间戳
1
2
|
In [
9
]: time.time()
Out[
9
]:
1376102328.536908
|
第二种以数组的形式表示即(struct_time),共有九个元素,分别表示,同一个时间戳的struct_time会因为时区不同而不同
1
2
|
In [
2
]: time.localtime()
Out[
2
]: time.struct_time(tm_year
=
2013
, tm_mon
=
8
, tm_mday
=
10
, tm_hour
=
10
, tm_min
=
30
, tm_sec
=
47
, tm_wday
=
5
, tm_yday
=
222
, tm_isdst
=
0
)
|
gmtime()与mktime()可以将两种时间表示方法自由转换
1
2
|
In [
22
]: time.gmtime(time.time())
Out[
22
]: time.struct_time(tm_year
=
2013
, tm_mon
=
8
, tm_mday
=
10
, tm_hour
=
2
, tm_min
=
46
, tm_sec
=
54
, tm_wday
=
5
, tm_yday
=
222
, tm_isdst
=
0
)
|
1
2
|
In [
23
]: time.mktime(time.localtime())
Out[
23
]:
1376102845.0
|
strftime()可以将struct_time类型自由转换成字符型
1
2
|
In [
24
]: time.strftime(
"%Y%m%d"
, time.localtime())
Out[
24
]:
'20130810'
|
strptime(string, format) 将时间字符串根据指定的格式化符转换成数组形式的时间
1
2
|
In [
26
]: time.strptime(
'20130810'
,
"%Y%m%d"
)
Out[
26
]: time.struct_time(tm_year
=
2013
, tm_mon
=
8
, tm_mday
=
10
, tm_hour
=
0
, tm_min
=
0
, tm_sec
=
0
, tm_wday
=
5
, tm_yday
=
222
, tm_isdst
=
-
1
)
|
注意,不能直接将时间戳转换为字符串,时间串也不能直接转换为时间戳,只能通过localtime,利用mktime方法来转
二.datetime模块
1
2
|
In [
27
]: datetime.datetime.now()
Out[
27
]: datetime.datetime(
2013
,
8
,
10
,
10
,
56
,
10
,
611490
)
|
strftime方法,可以将一个datetime型日期转换成字符串
1
2
|
In [
28
]: datetime.datetime.now().strftime(
"%Y%m%d"
)
Out[
28
]:
'20130810'
|
datetime.strptime(date_string, format):将格式字符串转换为datetime对象
1
2
|
In [
30
]: datetime.datetime.strptime(
"20130810"
,
"%Y%m%d"
)
Out[
30
]: datetime.datetime(
2013
,
8
,
10
,
0
,
0
)
|
三.计算当前时间的前1天
1
|
one_day_before
=
datetime.datetime.today()
-
datetime.timedelta(days
=
1
)
|
天:days
小时:hours
分钟:minutes
四.time与datetime之间的互相转换
time 转为datetime
1
2
|
a
=
time.time()
datetime.datetime.fromtimestamp(a)
|
datetime 转为time
1
2
|
b
=
datetime.datetime.now()
time.mktime(b.timetuple())
|
参考:http://iam42.iteye.com/blog/1922875
http://blog.csdn.net/hong201/article/details/3193121
本文转自布拉君君 51CTO博客,原文链接:http://blog.51cto.com/5148737/1760596,如需转载请自行联系原作者