【问题标题】:python arrow shifting hourspython箭头移动时间
【发布时间】:2017-04-19 18:37:54
【问题描述】:

我正在尝试向箭头对象添加(移位)6 小时,但不知何故它似乎代替了它:

>>> import arrow
>>> print(arrow.utcnow(),arrow.utcnow().replace(hour=+6))
2017-04-19T18:29:16.217239+00:00 2017-04-19T06:29:16.217304+00:00

documentation 给了我这个例子:

arw.replace(weeks=+3)

为什么它不适用于小时?我在这里做错了什么?

【问题讨论】:

  • +6 只是 6。你告诉它用 6 代替小时。

标签: python python-3.x datetime python-arrow


【解决方案1】:

你需要在hour后面加上一个s

>>> print(arrow.utcnow(),arrow.utcnow().replace(hours=+6))
2017-04-19T18:40:41.096311+00:00 2017-04-20T00:40:41.096371+00:00

文档在他们的示例中有点草率,但您可以推断出来(周与周)

或者,获取一个属性向前或向后移动的:

>>> arw.replace(weeks=+3)
<Arrow [2013-06-02T03:29:35.334214+00:00]>

(来自文档)

3+3 解析为完全相同(正值 3),因此加号不是进行移位的部分。只是weekweeks的区别。

在较新的版本中,您可以使用.shift(hours=+6) 以避免混淆,如API docs 中所示。

【讨论】:

  • 哇,这真是一个令人困惑的界面(尤其是因为 +6 仍然只有 6 - + 没有做任何事情 - 但用户指南没有解释任何内容,并且看起来像+ 很重要)。
  • 根据API guide,不推荐使用复数名称来表示相对移位。
  • 所以,replace(hours=6) 实际上并没有取代任何东西,只是增加了 6 小时?这太令人困惑了。
  • @user2357112 啊,使用.shift(hours=+6) 更有意义不幸的是,这在我的标准 ubuntu 包中尚不可用,虽然可能通过 pip..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
  • 1970-01-01
  • 2019-05-25
  • 1970-01-01
  • 2016-01-02
  • 2013-04-01
  • 2019-10-27
相关资源
最近更新 更多