UTC时间与UNIX时间戳之间的转换

使用date命令:

将当前系统时间转换为UNIX时间戳

1
2
$date +%s
1263236513

+%s是date的格式控制,上面命令的意思其实就是将当前系统时间以UNIX时间戳的形式输出。
如果要将任意UTC时间转换为UNIX时间戳的话:

1
2
$date -d '2010-01-12 utc' +%s
1263254400

相反的如果要将UNIX时间戳转换为UTC时间则是:

1
2
$date -d '1970-01-01 utc 1263236311 seconds'  +%Y-%m-%d-%H:%M:%S
2010-01-12-02:58:31

由此可以看出linux下的date命令还是十分强大的,更详细的介绍参看info date.

使用Python:

将当前系统时间转换为UNIX时间戳

1
2
3
>>> import time
>>> time.time()
1263239477.4449849

如果要将任意UTC时间转换为UNIX时间戳的话:

1
2
3
4
5
6
7
8
9
>>> import time
>>> time.time()
1263239477.4449849
>>> import datetime
>>> d1 = datetime.datetime(2010,1,12,2,28,01)
>>> t1 = time.mktime(d1.timetuple())
>>> print t1
1263234481.0
>>> d2 = time.localtime(t1)

mktime()函数是将time对象转为一个浮点数(即UNIX时间戳)。可以用localtime()再将浮点数转换
为time对象。
相反的如果要将UNIX时间戳转换为UTC时间则使用的是time.localtime()函数。

还有一个很有用的函数就是 time.strptime(string[,format]):
用来从一个字符串中按照一定的格式提取出一个struct_time,例如:

1
2
3
>>> import  time
>>> time.strptime("2010-1-12", "%Y-%m-%d")
time.struct_time(tm_year=2010, tm_mon=1, tm_mday=12, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=12, tm_isdst=-1)

其中的format转意符跟date命令中的相同,如下:

format转义符对应意义如下

    %a 本地简化星期名称
    %A 本地完整星期名称
    %b 本地简化的月份名称
    %B 本地完整的月份名称
    %c 本地相应的日期表示和时间表示
    %d 月内中的一天(0-31)
    %H 24小时制小时数(0-23)
    %I 12小时制小时数(01-12)
    %j 年内的一天(001-366)#hi.baidu.com/muinlive
    %m 月份(01-12)
    %M 分钟数(00=59)
    %p 本地A.M.或P.M.的等价符
    %S 秒(00-59)
    %U 一年中的星期数(00-53)星期天为星期的开始
    %w 星期(0-6),星期天为星期的开始
    %W 一年中的星期数(00-53)星期一为星期的开始
    %x 本地相应的日期表示
    %X 本地相应的时间表示
    %y 两位数的年份表示(00-99)
    %Y 四位数的年份表示(000-9999)
    %Z 当前时区的名称
    %% %号本身
This entry was written by risent , posted on Monday January 11 2010at 01:01 pm , filed under python and tagged , , , . Bookmark the permalink . Post a comment below or leave a trackback: Trackback URL.

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>