Python中的时间date转换

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));

猜你喜欢

转载自san-yun.iteye.com/blog/1674622