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

我想将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.

解决方法:

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值