首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将时间字符串解析为特定的时区?

如何将时间字符串解析为特定的时区?
EN

Stack Overflow用户
提问于 2012-10-08 00:25:36
回答 2查看 1.7K关注 0票数 5

我有一根绳子:

十月七日星期日下午四时

当我使用Time.parse时,Ruby假设时区是UTC。我如何告诉Ruby给我-0700时区?我试过用

代码语言:javascript
复制
tz.utc_to_local(Time.parse(string))

但我还是能拿回UTC +0000时区。

EN

回答 2

Stack Overflow用户

发布于 2012-10-08 02:03:46

“在解析时间信息时,重要的是不要在不指定时区的情况下这样做”

这个建议的瑰宝来自于这个有用的博客:在Rails中使用时区

无论您是否使用rails,时间字符串总是有一个附加时区。在您的示例中,您假设时间字符串有-0700偏移量,但不将时区信息传递给解析方法(该方法假设它是UTC)。

代码语言:javascript
复制
> Rails.application.config.time_zone
=> "Mountain Time (US & Canada)"

这是因为我有以下配置:

代码语言:javascript
复制
config.time_zone = 'Mountain Time (US & Canada)'

> string = "Sunday, Oct 7 4:00pm"
=> "Sunday, Oct 7 4:00pm"
> Time.parse(string)
=> 2012-10-07 16:00:00 -0600
> Time.parse(string).zone
=> "MDT"

在纯红宝石中也是如此:

代码语言:javascript
复制
> require 'time'
=> true
> Time.local( 2012, 10, 07 )
=> 2012-10-07 00:00:00 -0600
> Time.local( 2012, 10, 07 ).zone
=> "MDT" 
> string = "Sunday, Oct 7 4:00pm"
=> "Sunday, Oct 7 4:00pm"
> Time.parse(string)
=> 2012-10-07 16:00:00 -0600
> Time.parse(string).zone
=> "MDT"
票数 1
EN

Stack Overflow用户

发布于 2012-10-08 01:30:45

确保您的时区设置正确。

代码语言:javascript
复制
config.time_zone = 'Eastern Time (US & Canada)'

Time.parse应该默认为当前时区,但也可以尝试

代码语言:javascript
复制
Time.parse('####').in_time_zone
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12774018

复制
相关文章

相似问题

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