最后更新于 .

在C/C++中,我们存储时间时,一般都会使用unix时间戳,使用也非常简单:

time_t t = time(NULL);

关于用C++实现string和time_t的转化,本博也专门写了一篇文章:
时间time_t和string(char*)格式互转
但是在python中怎么实现操作unix时间戳呢?
本博也特意写了代码如下:

# -*- coding: utf-8 -*-

import time
import datetime

def StringToTime(strtime):
    t_tuple = time.strptime(strtime,"%Y-%m-%d %H:%M:%S")
    return time.mktime(t_tuple)

def StringToTime2(strtime):
    dt = datetime.datetime.strptime(strtime,"%Y-%m-%d %H:%M:%S")
    t_tuple = dt.timetuple()
    return time.mktime(t_tuple)

def TimeToString(timestamp):
    t_tuple = time.localtime(timestamp)
    dt = datetime.datetime(*t_tuple[:6])
    return dt.strftime("%Y-%m-%d %H:%M:%S")

def GetYesterday():
    d = datetime.datetime(*time.localtime()[:6])
    t = datetime.timedelta(days=1)
    return  (d-t)

if __name__ == "__main__":
    timestamp = StringToTime("2010-10-20 1:2:2")
    print timestamp

    timestamp = StringToTime2("2010-10-20 1:2:2")
    print timestamp

    strtime = TimeToString(timestamp)
    print strtime
    
    print '-------------------------------------------'

    print GetYesterday()

运行结果如下:

1287507722.0
1287507722.0
2010-10-20 01:02:02
-------------------------------------------
2010-10-26 18:09:28

可以使用C++版的互相读取一下试试,经测试是可用的。
另外,上面的代码中我还定义了一个GetYesterday的函数,演示的实际上是时间差的操作,timedelta的细节可以参看这里:
http://docs.python.org/library/datetime.html#datetime.timedelta
参考文档: http://www.51testing.com/?uid-175444-action-viewspace-itemid-213738
另:
偶尔发现想起的一个问题,在python中获取进程id和线程id的代码分别为:

import thread
import os

print os.getpid()
print thread.get_ident() 

Pingbacks

Pingbacks已打开。

Trackbacks

引用地址

评论

  1. 故事大王

    故事大王 on #

    恨啊!!!

    我竟然没看清time.mktime()的参数说明,只看了pydoc的“简”介,结果用了StringToTime2()这种纠结的处理方法……

    其实最简约的是第一种方法……

    Reply

  2. Dante

    Dante on #

    生成当前时间timestamp:
    time.time()

    Reply

发表评论