【问题标题】:datetime, adding a day and getting correct format日期时间,添加一天并获得正确的格式
【发布时间】:2017-04-20 03:48:48
【问题描述】:

添加一天有多种方式,例如:

import datetime
print(datetime.datetime.now() + datetime.timedelta(days=1))

问题在于答案是:2016-12-06 16:52:44.679431 我只需要2016-12-06。我可以通过执行像拆分这样的字符串操作来轻松获得它。我想知道是否有办法直接做到这一点。

其次:

根据我从文档中读到的内容,以下两种方式应该给我在我的时区的时间,但两者都没有。

import time
print(time.localtime())

结果:time.struct_time(tm_year=2016, tm_mon=12, tm_mday=5, tm_hour=17, tm_min=50, tm_sec=56, tm_wday=0, tm_yday=340, tm_isdst=0)

&

import datetime
print(datetime.datetime.now())

返回 2016-12-05 17:52:09.045170

两者都没有,他们都给我格林威治标准时间:

如何获取我的本地时区?

总结: 有没有直接的方法来一天并获得正确的表格?一个 如何获取我的本地时区?

【问题讨论】:

  • 好吧...我还不够清楚。您对时区或日期是否有问题?
  • (datetime.datetime.now() + datetime.timedelta(days=1)).date() == 2016-12-06
  • 两者都有,但 AChampion 回答了格式化部分
  • datetime.date.today() + datetime.timedelta(days=1) -- 使用datetime.date.today() 而不是datetime.datetime.today()。结果是本地日期。

标签: python datetime


【解决方案1】:

根据文档:

datetime.date()

返回具有相同年月日的日期对象。

在你的情况下:

import datetime

print("local hour: "+str((datetime.datetime.now() + datetime.timedelta(days=1)).date()))
print("utc hour: "+str((datetime.datetime.utcnow() + datetime.timedelta(days=1)).date()))

输出:

local hour: 2016-12-06
utc hour: 2016-12-06

另一种方法是将datetime.datetime.today()更改为datetime.date.today()

import datetime

print(datetime.date.today() + datetime.timedelta(days=1))

输出:

2016-12-06

【讨论】:

  • 确保解决所有 OP 的问题:“datetime.now 和 datetime.today 是否为您提供您所在时区的时间?根据我之前的代码,我假设它提供了 GMT,所以有没有直接的方法改变时区?”咳咳,我就回答一下。文档声称从today()now() 返回的时间是当地时间。
  • 文档声称是当地时间,但我得到的是 GMT?我之前阅读过文档,这就是我感到困惑的原因。在原始 q 中添加了示例。
  • 当地时间和 UTC 的日期部分在晚上 9 点之前都是相同的,但是如果我使用的日期和时间是 GMT,我正在构建的网站肯定会出现错误。 ——
  • @Tanc27:提供 GMT 的代码是在您的本地计算机上还是在 Web 服务器上运行的?
  • 我正在使用 cloud 9 IDE。所以我猜他们使用GMT。我应该意识到对不起。我是要减去五个小时,还是可以在我的 IDE 中更改时区?
猜你喜欢
  • 1970-01-01
  • 2018-03-29
  • 1970-01-01
  • 2016-05-11
  • 1970-01-01
  • 1970-01-01
  • 2012-05-27
  • 2011-10-26
  • 1970-01-01
相关资源
最近更新 更多