在JavaScript中应用时区后获取Date的组件



事情是这样的:我目前正在编写一个"时间可用性"功能。

的例子:星期日:上午七时至晚上九时三十分星期一:上午八时至晚上十时星期二:上午七时三十分至晚上八时三十分等等…

这个想法是,用户可以指定一个时间范围内的业务是"可用"的公众。具体的日期是无关紧要的-无论当前是3号星期一还是10号星期一,为"星期一"指定的时间范围适用于所有星期一。每个时间段的开始和结束时间分别保存为小时字段(1-12)、分钟字段(0-59)和时间段字段(a.m.或p.m.)。这样做是必要的,因为这是我国特有的,这里我们使用A.M./P.M.而不是24小时制。当然,因为我们讨论的只是小时和分钟,而不是具体的完整日期,所以在这种情况下我们不应用时区。

然而,在其他一些地方,我需要一个JavaScript代码来获取当前日期(特定的整天和时间),对所述日期应用特定的时区(准确地说是"America/Panama"),然后将该日期分离到其组件中(我需要根据时区为一周中的哪一天、日期、小时、分钟和周期(上午或下午)提供单独的值)。这是为了根据星期几来评估当前日期是否在指定的时间范围内(如上一段所述)。

是的,我知道日期在内部是"通用的",而时区应该只是"为了向用户显示字符串而应用的东西"。以前见过。但正如你所看到的,这里不是这样。什么好主意吗?

编辑:对不起,忘了澄清:解决方案必须没有第三方脚本。也就是说,我需要的是纯粹的"香草"JavaScript。

所以,您需要当前的Date:

var now = new Date();

您需要按时区更改它:

now.setHours(now.getHours() + timezone);

并获取其他值:

var dayOfWeek = now.getDay();
var dayOfMonth = now.getDate();
var hour = now.getHours() % 12;
var minute = now.getMinutes;
var period = now.getHourse < 12 ? 0:1; //0 is AM, 1 is PM

这是你想要的吗?

您应该能够使用像moment.js这样的库来获取所有这些信息。

由于巴拿马没有夏令时,您可以在全年的UTC时间增加5个小时。

var d = new Date();
console.log("Date is now:"+d.toString());
var utc=new Date(d.getTime()+(d.getTimezoneOffset()*60000));
// or utc=d;utc.setHours(utc.getHours()+(utc.getTimezoneOffset()/60))
// note that UTC does not represent correct milliseconds from epoch for UTC now
//  it has the UTC values for getHours
//  if current locale has daylight saving JavaScript will give the correct
//  timezoneoffset
console.log("UTC date is now:"+utc.toString());
//http://www.timeanddate.com/worldclock/city.html?n=192
// panama has no daylight saving and is UTC -5 all year round
// 18000000 is 5*60*60*1000 (5 hours in milliseconds)
panama = new Date(utc.getTime()+(18000000));
//or panama=utc;panama.setHours(panama.getHours()+5);
console.log(panama.toString());

这是必要的,因为这是我的国家特有的,这里我们使用A.M./P.M.,而不是24小时制

不,你弄错了。这不是数据格式,而只是您自定义的输入/输出格式。数据格式应该是易于存储为值并易于使用24小时制进行计算的格式。例如,它的单位可以是"从午夜开始的分钟数"。

获取当前日期

您可以使用Date对象。

应用特定时区

这在JavaScript中有点复杂。您只有当前环境的时区,对于其他所有内容,您将需要使用变通方法并移动实际的UTC日期。这可以通过set…方法来完成,该方法将处理结转等问题;看看这个例子:

相关内容

  • 没有找到相关文章

最新更新