草庐IT

ruby-on-rails - Ruby/Rails 中的夏令时开始和结束日期

我正在开发一个Rails应用程序,我需要在其中找到给定特定偏移量或时区的夏令时开始和结束日期。我基本上在我的数据库中保存了从用户浏览器接收到的时区偏移量(“+3”,“-5”),我想在它出现时修改它由于夏令时的变化。我知道Time实例变量有dst?和isdst方法,如果存储在它们中的日期在夏令时与否。>Time.new.isdst=>true但是使用它来查找夏令时的开始和结束日期会占用太多资源,而且我还必须为我拥有的每个时区偏移量执行此操作。我想知道更好的方法。 最佳答案 好的,基于你所说的和@dhouty'sanswer:您希望能够

ruby - Ruby Time#dst 如何运行?

这可能是一个愚蠢的问题,表明我对夏令时的基础知识缺乏了解,但根据标题,Time.dst?如何知道时间对象确实是真还是假?大概这必须通过日期和时区的组合来辨别,但这没有意义,因为时区中的低纬度不使用夏令时?因此肯定它必须需要位置来识别#dst??我错过了什么? 最佳答案 为了处理时区和夏令时,Ruby和其他所有东西一样,是callinglocaltime_rCfunction.这将时间放入名为tm的C结构中其中包括一个名为isdst的字段。Ruby正在读取该标志。localtime_r首先通过从全局tzname变量获取您的时区来计算i

ruby-on-rails - 在 Rails 中,为什么 1.year.from_now 与 1.year.to_i.seconds.from_now 不同?

我能否让Rails在几秒钟内将相同的逻辑应用于我的计算,就像它在几年内对我的计算所做的一样?puts"#{1.year.from_now}|#{1.year.to_i.seconds.from_now}"2017-03-2318:48:06UTC|2017-03-2400:48:06UTC我不明白这6小时的时差从何而来。 最佳答案 相差6小时。这是因为以秒为单位的1年(由to_i方法转换)在RubyonRails核心扩展中被定义为365.25天:>>1.year.to_i/60/60/24.0=>365.25这0.25天是实际的6小

sql - 选择预定项目时在 Postgres 中考虑 DST

我有一个Postgres时钟闹钟表(不是真的,但这是类似的,而且更容易解释)。警报由用户设置,分辨率为1小时,用户可以来自许多不同的时区。警报每天都在重复。我想可靠地获取应该在一天中的特定时间响起的警报,并且我遇到夏令时问题。如何以最佳方式做到这一点?例子AlfredandLottabothliveinStockholm(+1hourfromUTC,but+2hwhenit'sDST).SharonlivesinSingapore(+8hoursfromUTC,noDST)Duringwinter,Alfredsetsanalarmfor4AM.Thealarmshouldgooffa

javascript - 使用 moment.js 防止 DST 偏移以处理重复发生的事件

我正在构建的系统有一个事件组件,其中一部分是创建重复事件的能力。在我的数据库中,我以UTC格式存储所有事件。当一个重复事件显示在用户的日历上时,它应该总是显示在“墙上时间”中。因此,例如,如果我在每周三下午1:00创建一个重复事件,无论夏令时如何变化,它都应该始终在下午1:00。我遇到的问题是,每当我尝试使用Moment.js设置此日期的格式时,Moment始终会考虑DST转换并相应地更新事件。以我之前的示例为例,在2016年,DST类次发生在3月13日,因此如果我的约会是在2016年2月预订的,那么3月13日之前的每个约会都会正确输出为1:00PM。3月13日之后,应用夏令时转变,我

不同语言环境和时区的 Javascript 日期对象

我需要编写一个Web应用程序来显示不同地区的人们的事件。我快完成了,但是日期有2个问题:使用datejavascript对象,日期取决于用户计算机设置并且不可靠如果在不同时区的地方有一个事件尊重用户当前位置,我必须在()中打印它。是否可以在javascript中构建具有给定时区和夏令时设置的日期对象?我也找到了一些变通方法,例如jsdate和日期网络服务,但它们并没有解决具有正确时区和夏令时设置的javascript对象的问题(用于日期操作,例如添加日期等)。 最佳答案 有几件事要牢记。以UTC时间存储所有事件日期时间是的,没有办法

Javascript Date - 如何知道 DST 在给定时区是否有效

首先,我不是在寻找DST是否在本地生效。我正在运行一个Node进程,该进程包含具有关联时间戳的数据。我需要将这些时间戳转换为指定时区的日/月/年,但我得到的只是时区的偏移量和DST偏移量。我希望Date/Moment在时区下工作得更好。它们适用于UTC或本地时区,但似乎您需要破解它才能获得其他东西。有什么我想念的吗?假设我可以确定DST是否生效,这是否可行:vard=newDate(ts+timezone_offset-local_offset);d.getMonth();d.getDate();其中timezone_offset是时区的偏移量(标准偏移量或dst偏移量)?我如何确定D

javascript - 需要使用 Javascript Date Object 在 DST 转换上显示本地时间

我正在尝试在Javascript中(在Firefox等网络浏览器中)以小时(整点)为间隔输出一系列时间。这一系列时间将与短日(Spring减少一小时)和长日(秋季增加一小时)重叠。我正在寻找的输出是本地时间,即应用了时区和DST偏移量。因此,例如,在英国,短日的01:00到01:59缺少一个小时,因此输出将是:00:00、02:00、03:00在漫长的一天中,我们从01:00到02:00有一个额外的小时,这样输出将是:00:00、01:00、01:00、02:00、03:00我已经找到了这两个出色的答案,它们突出了一些陷阱并解决了我的部分问题:Daylightsavingtimeand

javascript 似乎在 Firefox 中反向使用时区

我已经在Firefox(版本21)的控制台中运行了以下命令,但得到了我不期望的结果。newDate(1362891600000);vardate=newDate(1362891600000);vartime=date.getHours();newDate(date.setHours(date.getHours()+24));结果真的让我陷入了一个循环。第一个日期显示为东部夏令时,而第二个日期显示为东部标准时间。这完全是倒退。IE或Chrome不会发生这种情况。这是怎么回事? 最佳答案 这绝对是Firefox中的一个错误。您可能应该向

javascript - 具有解构的对象属性分配?

我想使用ES6destructuring分配对象的属性,但无法弄清楚语法。vardst={};//alreadyinexistence,withitsownprops,methods,etc.varsrc={a:'foo',b:'bar',c:'baz'};dst.a=src.a;dst.b=src.b;>=ES6(我自己编造的,无效的语法):letdst={};letsrc={a:'foo',b:'bar',c:'baz'};dst[{a,b}]=src;是否可以对对象使用解构赋值?正确的语法是什么?编辑:在我的用例中,dst是一个在需要合并src的属性子集之前就已经存在的对象;它不