奇怪的时间戳转换

时间:2016-02-24 19:34:53

标签: python date python-3.x timestamp

我有这些日期

  • 2016-02-26 12:12:12
  • 2016-02-friday 12:12:12

(这两个日期指的是同一天)

如果我在时间戳中转换第一个,然后以可读格式将其转换回来,那就可以了。

但是如果我在第二个上尝试相同的话,它就不会转换回正确的日子!

这就是我的所作所为:

sTimestamp = time.mktime(
       datetime.datetime.strptime(
             "2016-02-26 12:12:12",
             "%Y-%m-%d %H:%M:%S")
      .timetuple())
print("date from timestamp = " +
       datetime.datetime.fromtimestamp(int(sTimestamp))
       .strftime('%Y-%m-%d %H:%M:%S'))

sTimestamp = time.mktime(
       datetime.datetime.strptime(
              "2016-02-friday 12:12:12",
              "%Y-%m-%A %H:%M:%S")
      .timetuple())
print("date from timestamp = " + 
       datetime.datetime.fromtimestamp(int(sTimestamp)).
       strftime('%Y-%m-%d %H:%M:%S'))

两行的输出是:

  • 日期时间戳= 2016-02- 26 12:12:12
  • 日期时间戳= 2016-02- 01 12:12:12

正如你所看到的那样,第一个回到了26,但是第二个回到了01,原因不明。顺便说一句,01是星期一......

有关我使用python 3.4的信息,我在Windows上。

1 个答案:

答案 0 :(得分:1)

第一个问题:

  

(这两个日期指的是同一天)

不,他们不是。第一个是指2016年2月的最后一个星期五;第二个指的是2016年2月的星期五 a

此外,strptime与数字一起使用,因为"Friday"之类的字符串并不准确。 Python docs说:

  

对于时间对象,不应使用年,月和日的格式代码,因为时间对象没有此类值。如果它们仍被使用,则1900代替年份,1代表月和日。

因此,使用"Friday"之类的不精确值看起来使用相同的默认回退1