首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用时区的Strptime

使用时区的Strptime
EN

Stack Overflow用户
提问于 2011-10-27 05:26:15
回答 6查看 19.9K关注 0票数 24

我有一个用DateTime.strptime解析的字符串。字符串中日期的时区是CET,但是Ruby创建了一个UTC DateTime对象,该对象的偏移量当然是2小时。

目前,我正在使用DateTime.strptime().change(:offset => "+0020")解决这个问题,但我非常确定这不是它的工作方式。

有人能告诉我做这件事的正确方法吗?

EN

回答 6

Stack Overflow用户

发布于 2011-10-27 05:53:38

我通过以下方式使用它:

ruby-1.9.2-head :001 > require 'date'
 => true 
ruby-1.9.2-head :002 > fmt = "%m-%d-%Y %H:%M:%S %Z"
 => "%m-%d-%Y %H:%M:%S %Z" 
ruby-1.9.2-head :003 > DateTime.strptime "10-26-2011 10:16:29 CET", fmt
 => #<DateTime: 2011-10-26T10:16:29+01:00 (212186380589/86400,1/24,2299161)> 
ruby-1.9.2-head :004 > DateTime.strptime "10-26-2011 10:16:29 UTC", fmt
 => #<DateTime: 2011-10-26T10:16:29+00:00 (212186384189/86400,0/1,2299161)> 
ruby-1.9.2-head :005 > DateTime.strptime "10-26-2011 10:16:29 PST", fmt
 => #<DateTime: 2011-10-26T10:16:29-08:00 (212186412989/86400,-1/3,2299161)> 

这是你想说的吗?

票数 13
EN

Stack Overflow用户

发布于 2017-05-28 03:45:51

这在Rails 5中有效:

Time.zone.strptime("2017-05-20 18:20:10", "%Y-%m-%d %H:%M:%S")

返回指定时区中的时间。

票数 9
EN

Stack Overflow用户

发布于 2016-12-29 08:50:12

至少在Rails4.2(可能是更早的版本,还没有测试过)中,只要你使用Time#strptime而不是DateTime.strptime,当前时区就会被自动应用:

> DateTime.strptime('12/28/2016 5:00 PM', '%m/%d/%Y %H:%M %p')
=> Wed, 28 Dec 2016 17:00:00 +0000

> Time.strptime('12/28/2016 5:00 PM', '%m/%d/%Y %H:%M %p')
=> 2016-12-28 17:00:00 -0800
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7909128

复制
相关文章

相似问题

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