ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

将Python DateTime字符串转换为整数毫秒

2019-10-10 07:20:34  阅读:990  来源: 互联网

标签:python mysql datetime python-2-7 datetime-format


我想将UTC TimeDate标记字符串转换为毫秒的整数值(可能需要为64位数量),以便在存储在mySQL数据库列中时占用较少的空间.这个UTC字符串是从另一个库中生成的,我将其存储为一种针对每个用户的GUID.

可以将datetime或dateutil转换为单个整数值(例如“自纪元以来的毫秒数”)吗?还是我需要自己做?

使用这种方法进行解析:

myDateTime = dateutil.parser.parse("2015-06-27T02:10:05.653000Z")
print("Parsed datetime String is {0}, ordinal value is {1}".format(myDateTime, myDateTime.toordinal()))

给出输出:

Parsed datetime String is 2015-06-27 02:10:05.652999+00:00, ordinal value is 735776

…仅给出日期的序数值.此外,如果我的时间是653毫秒的整数,那么我希望该解析对象知道它具有653毫秒,而不是652999.

解决方法:

[根据评论中的建议进行编辑]

使用Ben Alpert’s回答How can I convert a datetime object to milliseconds since epoch (unix time) in Python,我们可以执行以下操作:

from datetime import datetime
def unix_time(dt):
    epoch = datetime.utcfromtimestamp(0)
    delta = dt - epoch
    return delta.total_seconds()

def unix_time_millis(dt):
    return int(unix_time(dt) * 1000)

a = datetime.strptime("2015-06-27T02:10:05.653000Z", "%Y-%m-%dT%H:%M:%S.%fZ")
unix_time_millis(a)

收益:

1435371005653

等效于:2015年6月27日,星期六,格林尼治标准时间(如预期)

我们还可以使用datetime的.strftime(‘%s’)来获取Unix时间,甚至可以使用以下命令获取毫秒(但不建议这样做):

from decimal import Decimal

int(Decimal(datetime.strptime("2015-06-27T02:10:05.653000Z", "%Y-%m-%dT%H:%M:%S.%fZ").strftime('%s.%f'))*1000)

收益:

1435396205653

相当于:2015年6月27日,星期六,格林尼治标准时间(在我位于圣地亚哥的Mac上;请注意:这比我们预期的要晚7个小时).

J.F. Sebastian在上面的链接的注释中以及在有关.strftime(‘%s’)行为的this回答中描述了错误的原因.塞巴斯蒂安·J.F.塞巴斯蒂安指出:“它不受支持,它不是可移植的,它可能会为一个已知的日期时间对象默默地产生错误的结果,如果输入使用UTC(如在问题中),但本地时区不是UTC,它将失败”

标签:python,mysql,datetime,python-2-7,datetime-format
来源: https://codeday.me/bug/20191010/1885203.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有