如何以编程方式更改 Ruby 中的 RFC3339 时区偏移量?

How can I programmatically change an RFC3339 timezone offset in Ruby?

我想知道如何以编程方式更改 Ruby 2.3 中的 RFC3339 DateTime 的时区偏移量(ActiveSupport 可用,如果有帮助的话)。

我想将:2016-06-22T00:00:00+00:00 转换为 2016-06-22T00:00:00-04:00,而不求助于字符串替换。

编辑:根据铁皮人的要求,我将详细说明我的尝试。如上所述,我尝试使用 String#sub 来查找并替换原始字符串中有问题的部分。这行得通,但我认为这是一个问题,我想找到一个利用 Time/Date API.

的解决方案

看看DateTime#change,你可以传入一个偏移量。

require 'active_support/core_ext/date_time'

DateTime.now.change(offset: '-0400')
#=> Wed, 22 Jun 2016 23:47:34 -0400