我正在使用Rails应用程序,以“YYYY-MM-DD”格式将日期作为字符串提供,我想知道将其转换为在特定时间内设置为午夜的TimeWithZone对象的最佳方法zone,由数据库提供,也是字符串形式。
基本上我想要这个:
“2016-06-01”,“America / New_York”=> 2016年6月1日星期三00:00:00 EDT -04:00
“2016-06-01”,“Europe / Berlin”=> 2016年6月1日星期三00:00:00 CEST +02:00
“2016-01-01”,“America / New_York”=> 2016年1月1日星期五00:00:00 EST -05:00
“2016-01-01”,“Europe / Berlin”=> 2016年1月1日星期五00:00:00 CET +01:00
现在我知道肯定 不 只是Date.parse(x).to_datetime.in_time_zone(y).beginning_of_day因为对于“America / New_York”示例,那将分别产生“星期二,2016年5月31日00:00:00 EDT -04:00”和“星期四,2015年12月31日00:00:00 EST -05:00”,所以我想通过添加来纠正如果utc_offset为负数,那么我建立的方法基本上就是这样:
def midnight_in_time_zone(date_string, time_zone_string)
time_with_zone = Date.parse(date_string).
to_datetime.
in_time_zone(time_zone_string).
beginning_of_day
time_with_zone += 1.day if time_with_zone.utc_offset < 0
time_with_zone
end
这是我想要的方式,但感觉就像我正在以一种黑客的方式重新发明轮子,因为我试图做的事情似乎是这样一个基本功能,所以我想知道是否有内置方法我不知道我可以用来使这更简单,或者如果有人知道更好的方法。
答案 0 :(得分:0)
你可以试试这个:
$(document).ready(load);
function save() {
var saveDiv = document.getElementsByClassName("testclosed");
if (saveDiv) {
localStorage.setItem("isMenuOpen", true);
}
}
function load() {
var isMenuOpen = localStorage.getItem("isMenuOpen");
if (isMenuOpen) {
$(".testitem").removeClass("testclosed");
}
}
如果time_with_zone.utc_offset的值小于0,此行会自动增加1天
示例结果:
def midnight_in_time_zone(date_string, time_zone_string)
date_string.in_time_zone(time_zone_string)
end