将ISO 8601时间格式转换为UNIX时间戳(纪元)并再次返回而不会损失小数秒?

绍尔斯基

将ISO 8601时间格式转换为UNIX时间戳(纪元)并再次返回而又不损失小数秒的Python方法?

我找到了几个示例,但所有示例似乎都在转换的某个点上减少了小数秒。下面的例子...

问题似乎是最初转换为UNIX时间戳(时期)。下面的代码。

def ISO8601ToEpoch(theString):

    from datetime import datetime
    import calendar

    return calendar.timegm(datetime.strptime(theString, "%Y-%m-%dT%H:%M:%S.%f").timetuple())

def EpochToISO8601(theEpoch):

    from datetime import datetime

    return datetime.fromtimestamp(theEpoch).isoformat()

#

print 'Original Time {0}'.format('2018-04-27T04:19:51.050937')

theTime=ISO8601ToEpoch('2018-04-27T04:19:51.050937')
print 'Time {0}'.format(theTime)

print 'Original Time {0}'.format(EpochToISO8601(theTime)

结果是...

原始时间2018-04-27T04:19:51.050937时间1524802791原始时间2018-04-27T04:19:51

有没有办法让时间元组不浪费小数秒?

阿巴内特

这里的问题是,您正在将一个可以datetime理解的微秒转换成一个不能理解的微秒timetuple1个

显而易见的解决方法是不这样做。

如果要将datetime对象转换为时间戳,只需使用timestamp方法,就如同您已经使用fromtimestampclassmethod的方法一样。


1.您也许可以欺骗atimetuple持有afloat而不是int几秒钟。但是,那么您将破坏类型的不变式。而且,更重要的是,击败了该类型的全部目的,该目的与1980年代的C类型相同struct tm并且可能还会破坏该timegm函数,该函数可能仅调用同名的C函数。相对于,这是一个为Python设计的友好模块,大多数time模块是C的薄包装。)然后有文献记载,它返回一个整数类型,因此即使您走了那么远,也都没有用。 。<time.h>datetimetimegm

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用Shell将ISO 8601时间戳转换为Unix时间戳?

在Java中将ISO 8601时间戳字符串转换为纪元秒

命令行将ISO8601时间转换为Unix时间戳

将Unix时间戳转换为ISO 8601

将ISO 8601时间戳字符串转换为java.time.OffsetDateTime

Java:将ISO 8601时间戳字符串转换为epoch秒

从Java中的纪元时间返回以天为单位的ISO-8601时间格式

Python-将时间ISO 8601 STRING转换为13位时间戳(MS),反之亦然

将Unix时代时间转换为扩展的ISO8601

将日期时间转换为 ISO 8601 格式

如何使用jQuery将ISO 8601格式的日期转换为时间戳?

无法将Unix纪元/时间戳转换为正确的时间

将ISO日期转换为UNIX时间戳mongodb

将时间戳转换为golang中的ISO格式

将日期时间转换为ISO格式

邮递员-将ISO格式的日期转换为UNIX时间戳

如何使用moment.js将纪元时间转换为ISO 8601

如何使用 jq 将 JSON 中的 ISO 时间戳字段转换为纪元

使用Python从现在开始将ISO 8601时间格式计算为小时/分钟

将纪元/ unix时间转换为可读格式

使用时区将日期时间转换为 ISO 8601 日期时间格式

将毫秒转换为ISO 8601持续时间

将当前服务器时间转换为ISO 8601

将Unix纪元时间戳转换为JavaScript日期时间戳

Presto 将时间戳转换为纪元

R - 将时间戳转换为纪元

将 Unix 时间戳转换为可读的日期时间格式

将ISO8601日期文本转换为时间戳

使用PHP将influxdb时间格式转换为ISO8601格式