日期时间在UNIX中返回错误的时间

时间:2018-07-29 08:03:26

标签: python datetime

在这里,我遇到了以Unix格式返回时间的局面。

我有这个功能:

def get_today_date():
   nowDate = str(datetime.datetime.utcnow().date())
   unix_date = time.mktime(datetime.datetime.strptime(nowDate, "%Y-%m-%d").timetuple())
   return (unix_date)

当我打印“ nowDate”的值时很简单->它给了我想要的正确值(例如:UTC 7/29/2018 00:00:00),这是正确的。但是,当我将格式从Unix时间戳更改为日期格式并仅获得日期而不带时间时,它给了我(2018/7/28)。

我已经将unix中的值进行了检查,它给了我(7/28/2018 21:00:00)。为什么?

我的笔记本电脑处于UTC +3时区。

转换时出现问题了吗?还是笔记本电脑内部错误导致输出错误?

1 个答案:

答案 0 :(得分:0)

如果要查找今天的日期/时间,请使用datetime.datetime.now(),如果只需要日期,请使用datetime.datetime.today(),它将自动转换为您的时区。

如果您使用基于UTC的功能,则会获得3个小时的位置偏移,有时这可能会导致时间为前一天的21:00,而不是下一天的午夜-相当合理=)


您可以使用以下方法:

utcnow = datetime.datetime.utcnow()
midnight = time.mktime( datetime.datetime( utcnow.year, utcnow.month, utcnow.day).timetuple() )