Convert date to seconds
本问题已经有最佳答案,请猛点这里访问。
我正在寻找与python等效的
1 2 3 4 5 | $ convdate="Jul 1 12:00:00 2015 GMT" $ date '+%s' --date"$convdate" 1435752000 |
来自
1 2 | -d, --date=STRING display time described by STRING, not 'now' |
号
据我所知,Unix将日期表示为从1970年1月1日开始的偏移量,因此为了在Python中实现这一点,您可以得到时间增量。尤其是对于您的示例:
1 2 3 4 | from datetime import datetime a = datetime.strptime(convdate,"%b %d %H:%M:%S %Y %Z") b = datetime(1970, 1, 1) (a-b).total_seconds() |
输出为
1435752000.0
号
1 2 3 | >>> x = datetime.strptime('Jul 1 12:00:00 2015 GMT', '%b %d %H:%M:%S %Y %Z') >>> x.timestamp() 1435744800.0 |
注意这是一个本地时间戳。我的时区是UTC+2,因此比您预期的要少2小时。如果需要基于UTC的时间戳,可以这样做:
1 2 3 | >>> from datetime import timezone >>> x.replace(tzinfo=timezone.utc).timestamp() 1435752000.0 |
。
1 2 3 4 | >>> import time >>> m = time.localtime()#store it in a var >>> time.mktime(m) o/p: 1435657461.0 |
。
您尝试进行的转换称为"从epoch开始的秒数",并使用类似于下面的函数计算:
1 2 3 4 | def unix_time(dt): epoch = datetime.datetime.utcfromtimestamp(0) delta = dt - epoch return delta.total_seconds() |
您可以直接将日期时间与日期的每个部分一起加载,也可以从字符串中加载日期时间并计算秒数:
1 2 3 4 5 6 7 8 9 10 11 12 | >>> def unix_time(dt): ... epoch = datetime.datetime.utcfromtimestamp(0) ... delta = dt - epoch ... return delta.total_seconds() ... >>> import datetime >>> a = datetime.datetime(2015, 07, 01, 12, 00, 00) >>> print a 2015-07-01 12:00:00 >>> print unix_time(a) 1435752000.0 >>> |
号
注意:如果要去掉最后一个.0,可以使用long(unix时间(a))。
希望有帮助!