1.把字符串转换为datetime
from datetime import datetime
begin_date = datetime.strptime("2013-07-01",'%Y-%m-%d')
2.把当前时间转换为0点0分:
from datetime import datetime
now = datetime.now()
now.strftime("%Y-%m-%dT00:00:00Z")
输出: '2013-07-29T00:00:00Z'
3. 日期差,比如获取1小时以前的日期
import datetime
m = datetime.datetime.now()
print m + datetime.timedelta(hours=1)
print m - datetime.timedelta(minutes=10)
Python关于时间日期有两个库datetime和time,于是我们要在四种格式之间转换:
datetime.datetime对象 datetime.datetime.now()
time.struct_time对象 time.localtime()
字符串 "2010-12-04T10:30:53"
时间戳 1291433453 (一般我们不关心微秒)
列一下它们的转换方法:
dt = datetime.datetime(2010, 12, 4, 10, 30, 53)
dt = datetime.datetime.strptime("2010-12-04T10:30:53", "%Y-%m-%dT%H:%M:%S")
dt.strftime("%Y-%m-%dT%H:%M:%S") -> "2010-12-04T10:30:53"
或者 dt.isoformat().split(".").pop(0) -> "2010-12-04T10:30:53"
dt = datetime.datetime.fromtimestamp(1291433453)
(?) dt -> 1291433453
t = time.localtime(1291433453)
t = dt.timetuple()
t = time.strptime("2010-12-04T10:30:53", "%Y-%m-%dT%H:%M:%S")
t.strftime("%Y-%m-%dT%H:%M:%S") -> "2010-12-04T10:30:53"
long( time.mktime(t) ) -> 1291433453
(?) t -> dt
可以看出,Python没有提供直接的time.struct_time对象到datetime.datetime对象的转换,也没有直接提供datetime.datetime对象到时间戳的转换。另外,Python的两个strftime ,strptime中都没有时间戳的格式化符号。
对time.struct_time对象到datetime.datetime对象的转换,很容易想到通过字符串形式过渡一下:
dt = datetime.datetime.strptime(t.strftime("%Y-%m-%dT%H:%M:%S"), "%Y-%m-%dT%H:%M:%S")
格式化:
import datetime
now = datetime.datetime.now()
now.strftime("%y%m")
now.strftime("%H-%M-%S")
format:
%a
Locale’s abbreviated weekday name.
%A
Locale’s full weekday name.
%b
Locale’s abbreviated month name.
%B
Locale’s full month name.
%c
Locale’s appropriate date and time representation.
%d
Day of the month as a decimal number [01,31].
%H
Hour (24-hour clock) as a decimal number [00,23].
%I
Hour (12-hour clock) as a decimal number [01,12].
%j
Day of the year as a decimal number [001,366].
%m
Month as a decimal number [01,12].
%M
Minute as a decimal number [00,59].
%p
Locale’s equivalent of either AM or PM.
(1)
%S
Second as a decimal number [00,61].
(2)
%U
Week number of the year (Sunday as the first day of the week) as a decimal number [00,53]. All days in a new year preceding the first Sunday are considered to be in week 0.
(3)
%w
Weekday as a decimal number [0(Sunday),6].
%W
Week number of the year (Monday as the first day of the week) as a decimal number [00,53]. All days in a new year preceding the first Monday are considered to be in week 0.
(3)
%x
Locale’s appropriate date representation.
%X
Locale’s appropriate time representation.
%y
Year without century as a decimal number [00,99].
%Y
Year with century as a decimal number.
%Z
Time zone name (no characters if no time zone exists).
%%
A literal '%' character.
python的日期和java日期转换
本来想通过long类型来处理,没想到python和java有点不同:
python
>>> time.time()
1349153802.826779
>>> datetime.fromtimestamp(1349153802)
datetime.datetime(2012, 10, 2, 12, 56, 42)
Date date = new Date(1349153802000l);
System.out.println(date.getTime());
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
System.out.print(df.format(date));