首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何让Ruby解析时间,就好像它位于不同的时区一样?

如何让Ruby解析时间,就好像它位于不同的时区一样?
EN

Stack Overflow用户
提问于 2010-11-24 08:54:34
回答 8查看 45.5K关注 0票数 45

我正在解析类似这样的东西:

代码语言:javascript
复制
11/23/10 23:29:57

它没有与之关联的时区,但我知道它在UTC时区(而我不在)。我怎样才能让Ruby像在UTC时区一样解析它?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-11-24 09:08:09

您可以在解析字符串之前将UTC时区名称附加到该字符串:

代码语言:javascript
复制
require 'time'
s = "11/23/10 23:29:57"
Time.parse(s) # => Tue Nov 23 23:29:57 -0800 2010
s += " UTC"
Time.parse(s) # => Tue Nov 23 23:29:57 UTC 2010
票数 44
EN

Stack Overflow用户

发布于 2013-07-25 23:25:26

如果您使用rails,则可以使用ActiveSupport::TimeZone帮助器

代码语言:javascript
复制
current_timezone = Time.zone
Time.zone = "UTC"
Time.zone.parse("Tue Nov 23 23:29:57 2010") # => Tue, 23 Nov 2010 23:29:57 UTC +00:00
Time.zone = current_timezone

它被设计为在请求开始时根据用户时区设置时区。

所有东西都需要有Time.zone,所以Time.parse仍然会解析为服务器时区。

http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html

注意:您上面使用的时间格式不再有效,因此我将其更改为受支持的格式。

票数 23
EN

Stack Overflow用户

发布于 2019-09-13 10:45:18

来自https://rubyinrails.com/2018/05/30/rails-parse-date-time-string-in-utc-zone/的功劳

代码语言:javascript
复制
Time.find_zone("UTC").parse(datetime)
# => Wed, 30 May 2018 18:00:00 UTC +05:30
票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4262550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档