ruby-on-rails – 在显示日期时,让Rails忽略夏令时
发布时间:2020-12-16 20:53:38 所属栏目:百科 来源:网络整理
导读:我在我的Rails应用程序中有一个以UTC格式存储的日期,并且我正在尝试将其显示给以“东部时间(美国和加拿大)”作为其时区的用户.问题是导轨不断将其转换为东部夏令时(EDT),因此午夜显示为早上8点,应该是早上7点.反正有没有阻止DST转换? time = DateTime.parse
我在我的Rails应用程序中有一个以UTC格式存储的日期,并且我正在尝试将其显示给以“东部时间(美国和加拿大)”作为其时区的用户.问题是导轨不断将其转换为东部夏令时(EDT),因此午夜显示为早上8点,应该是早上7点.反正有没有阻止DST转换?
>> time = DateTime.parse("2013-08-26T00:00:00Z") => Mon,26 Aug 2013 00:00:00 +0000 >> time.in_time_zone("Eastern Time (US & Canada)") => Sun,25 Aug 2013 20:00:00 EDT -04:00 更新 我最终对@zeantsoi的方法进行了改进.我不是添加太多rails帮助器的忠实粉丝所以我扩展了活动支持的TimeWithZone类. class ActiveSupport::TimeWithZone def no_dst if self.dst? self - 1.hour else self end end end 现在我可以做time.in_time_zone(“东部时间(美国和加拿大)”).no_dst 解决方法
创建一个帮助器,利用TimeZone上的
dst? 方法检查传递的时区当前是否在DST中.如果是,则从提供的DateTime实例中减去一小时:
# helper function module TimeConversion def no_dst(datetime,timezone) Time.zone = timezone if Time.zone.now.dst? return datetime - 1.hour end return datetime end end 然后,在视图中渲染调整后的(或未调整的)时间: # in your view <%= no_dst(DateTime.parse("2013-08-26T00:00:00Z"),'Eastern Time (US & Canada)') %> #=> Sun,25 Aug 2013 19:00:00 EDT -04:00 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Ajax基础(检查用户名是否存在)
- 【React Native开发】React Native控件之ScrollView组件讲解
- c# – 应用于通用枚举集合的Cast.Cast导致无效的强制转换异
- 在Oracle中,如何得到真实的执行计划?
- SQLITE入门
- objective-c – 国际化:在Simulator中仅显示键名而不是本地
- 优雅的开发 Swift 和 Objective-C 混编的 Framework
- cocos2dx 3.0 加载 cocostudio httpClient
- 【Cocos2d-x】问题解决记录--游戏中加载UI (CocoStudio)的
- Oracle SQLcl - 替代 sqlplus 的利器