【问题标题】:python: convert date timestamp to epoch unix time and figure out number of days remaining?python:将日期时间戳转换为纪元unix时间并计算剩余天数?
【发布时间】:2025-12-04 21:35:01
【问题描述】:

我想将 2014-08-14 20:01:28.242 转换为 unix 时间戳 245293529385 并减去当前时间戳,以便通过从 14 中减去该值来计算过去和最终剩余的天数。

场景:用户注册,我想倒计时剩余试用天数。

【问题讨论】:

  • 一件事:很确定245293529385 不是正确的时间戳,因为它指的是“Wed, 16 Jan 9743 11:29:45 GMT”;)

标签: python


【解决方案1】:

time.strptime 来救援!使用格式字符串%Y-%m-%d %H:%M:%S.%f。例如:

   import time
   t = '2014-08-14 20:01:28.242'
   ts = time.strptime(t, '%Y-%m-%d  %H:%M:%S.%f')
   timestamp = time.mktime(ts)

现在将其转换为日期时间(来自:How do you convert a Python time.struct_time object into a datetime object?):

   from datetime import datetime
   dt = datetime.fromtimestamp(timestamp)

【讨论】:

  • 您也可以使用datetime 完成所有这些操作,而无需先处理time...
  • %f 表示Microsecond as a decimal number, zero-padded on the left. 000000, 000001, ..., 999999 对吗? Here
  • @B.Mr.W.第 4 条注释here:“%f 是 C 标准中格式字符集的扩展 [...] 当与 strptime() 方法一起使用时,%f 指令接受 1 到 6 位数字和零填充在右边。”所以它接受任意数量的字符。
  • 谢谢你,很好的回答,我更新了一些问题
  • @user299709 那是一个不同的问题,你为什么不接受这个答案,并将你的更新作为一个新的单独问题发布?
【解决方案2】:

分为两部分:

Convert input time string into datetime object

#!/usr/bin/env python
from datetime import datetime

dt = datetime.strptime('2014-08-14 20:01:28.242', '%Y-%m-%d  %H:%M:%S.%f')

Convert datetime object to Unix time ("seconds since epoch")

结果取决于输入时间使用的时区,例如,如果输入为 UTC,则相应的 POSIX 时间戳为:

timestamp = (dt - datetime(1970,1,1)).total_seconds()
# -> 1408046488.242

如果您输入的是本地时区,请查看How do I convert local time to UTC in Python?

【讨论】:

    最近更新 更多