Python datetime与timestamp之间的转换
# !!!! Python 2 datetime.datetime 对象没有timestamp方法!
在用Python处理datetime和timestamp的转换时发现在时区方面,Python的处理是个大坑。
因为Python的time是默认localtime输入来处理的,导致脚本在本地运行和在服务器运行会得到不一样的结果。一不注意就会中招。
R中也会碰到时区的问题,但是R的方法提供了tz选项来指定日期的时区,简化了问题。而Python 中的time.mktime无法对时区进行指定,带来了很多麻烦。查了很久,发现有一个time.timezone的属性,可以根据运行脚本的机器的时间,来灵活处理时区问题。
以下是datetime与timestamp转换的方法, 输入和输出都以GMT0为准.
from datetime import datetime
import time def timestamp_datetime(ts):
if isinstance(ts, (int, float, str)):
try:
ts = int(ts)
except ValueError:
raise if len(str(ts)) == 13:
ts = int(ts / 1000)
if len(str(ts)) != 10:
raise ValueError
else:
raise ValueError() return datetime.fromtimestamp(ts) def datetime_timestamp(dt, type='ms'):
if isinstance(dt, str):
try:
if len(dt) == 10:
dt = datetime.strptime(dt.replace('/', '-'), '%Y-%m-%d')
elif len(dt) == 19:
dt = datetime.strptime(dt.replace('/', '-'), '%Y-%m-%d %H:%M:%S')
else:
raise ValueError()
except ValueError as e:
raise ValueError(
"{0} is not supported datetime format." \
"dt Format example: 'yyyy-mm-dd' or yyyy-mm-dd HH:MM:SS".format(dt)
) if isinstance(dt, time.struct_time):
dt = datetime.strptime(time.stftime('%Y-%m-%d %H:%M:%S', dt), '%Y-%m-%d %H:%M:%S') if isinstance(dt, datetime):
if type == 'ms':
ts = int(dt.timestamp()) * 1000
else:
ts = int(dt.timestamp())
else:
raise ValueError(
"dt type not supported. dt Format example: 'yyyy-mm-dd' or yyyy-mm-dd HH:MM:SS"
)
return ts if __name__ == '__main__':
try:
print(datetime_timestamp('2015-01-01 20:20:00', 's'))
print(timestamp_datetime(1420114800))
print(timestamp_datetime(1420114800123))
except Exception as e:
print(e.args[0])
Python datetime与timestamp之间的转换的更多相关文章
- python—时间与时间戳之间的转换
python-时间与时间戳之间的转换 对于时间数据,如2016-05-05 20:28:54,有时需要与时间戳进行相互的运算,此时就需要对两种形式进行转换,在Python中,转换时需要用到time模块 ...
- Python数字与字符之间的转换
Python数字与字符之间的转换 命令 意义 int(x [,base ]) 将x转换为一个整数 long(x [,base ]) 将x转换为一个长整数 float(x ) 将x转换到一个浮点数 co ...
- c# datetime与 timeStamp时间戳 互相转换
将时间格式转化为一个int类型 // ::26时间转完后为:1389675686数字 为什么使用时间戳? 关于Unix时间戳,大概是这个意思,从1970年0时0分0秒开始到现在的秒数.使用它来获得的是 ...
- 常见的时间字符串与timestamp之间的转换 时间戳
这里说的字符串不是一般意义上的字符串,是指在读取日期类型的数据时,如果还没有及时解析字符串,它就还不是日期类型,那么此时的字符串该怎么与时间戳之间进行转换呢? ① 时间字符串转化成时间戳 将时间字符串 ...
- python中进制之间的转换
参考于:http://www.360doc.com/content/14/0428/11/16044571_372866302.shtml 在此非常感谢! ~~~~~~~~~~~~~~~~~~~~~ ...
- msyql DATETIME类型和Timestamp之间的转换
DATETIME -> Timestamp: UNIX_TIMESTAMP(...) Timestamp -> DATETIME: FROM_UNIXTIME(...) select da ...
- python 时间与时间戳之间的转换
https://blog.csdn.net/kl28978113/article/details/79271518 对于时间数据,如2016-05-05 20:28:54,有时需要与时间戳进行相互的运 ...
- String和Date、Timestamp之间的转换
一.String与Date(java.util.Date)互转 1.1 String -> Date String dateStr = "2010/05/04 12:34:23&quo ...
- Java:String和Date、Timestamp之间的转换
一.String与Date(java.util.Date)互转 1.1 String -> Date String dateStr = "2016-9-28 12:25:55" ...
随机推荐
- Java+selenium之WebDriver模拟鼠标键盘操作(六)
org.openqa.selenium.interactions.Actions类,主要定义了一些模拟用户的鼠标mouse,键盘keyboard操作.对于这些操作,使用 perform()方法进行执行 ...
- expect 安装 salt 客户端
#!/bin/bash for i in $(cat ./host.txt) do echo $i > ./tmp.txt HOSTNAME=$(cut -d ':' -f1 ./tmp.txt ...
- DDD工作流持久化(十六)
找到对应的sql文件执行sql语句 产生如下的表: 添加引用: 添加命名空间: using System.Activities.DurableInstancing; using System.Runt ...
- 拒绝频繁IP访问--转载
//首先我们要实现 IHttpModule接口 using System; using System.Collections.Generic; using System.Text; using Sys ...
- Go语言之闭包
闭包的最初目的是为了减少全局变量,在函数调用过程中,隐式的传递共享变量. 但这样的编辑,带来的坏处是不够直接清晰. 所以,如非必要,不要使用. 对象是附有行为的数据,它在类中集中定义, 而闭包是附有数 ...
- 二叉查找树及B-树、B+树、B*树变体
动态查找树主要有二叉查找树(Binary Search Tree),平衡二叉查找树(Balanced Binary Search Tree), 红黑树 (Red-Black Tree ), 都是典型的 ...
- NEST 中的日期数学表达式
Date math expressions Version: 5.x 英文原文地址:Date math expressions query/filter 中涉及到日期类型时(如:timeout 参数) ...
- 高性能之js
alloyteam团队的总结: 链接在:http://www.alloyteam.com/2012/10/high-performance-front-end-high-performance-jav ...
- day65 request对象,以及方法,response对象,render,redirect
这里的都是我们会频繁使用到的,用得多了自然就会了,我们写项目都是少不了这些用法的,所以这就把老师的博客粘过来就好了, Request对象 官方文档 属性 所有的属性应该被认为是只读的,除非另有说明. ...
- day10.函数,函数的参数
函数的思维导图: 老师的笔记 昨天内容概括 #组长:默写统一交给组长 #不建议看视频 #上课敲过的所有的例子 # 1.看一遍.看能不能看懂 # 2.给每一道题起一个名字或者一句描述 # 3.看着文字, ...