1

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

示例:周日:上午 7:00 至晚上 9:30 周一:上午 8:00 至晚上 10:00 周二:上午 7:30 至晚上 8:30 等...

这个想法是,用户可以指定企业对公众“可用”的时间范围。特定的日期数字无关紧要 - 当前是 3 号星期一还是 10 号星期一都没有关系,为“星期一”指定的时间范围适用于所有星期一。每个时间范围的开始和结束时间都保存为小时字段 (1-12)、分钟字段 (0-59) 和时段(上午或下午)字段。必须采用这种方式,因为这是我所在国家/地区特有的,在这里我们使用 AM/PM,而不是 24 小时制。当然,由于我们只讨论小时和分钟,而不是具体的完整日期,因此在这种情况下我们不应用时区。

但是,在其他地方,我需要一个 JavaScript 代码来获取当前日期(特定的全天和时间),将特定时区应用于所述日期(准确地说是“美国/巴拿马”),然后分隔该日期到它的组件中(根据时区,我需要为星期几、天数、小时、分钟和时段(上午或下午)设置单独的值)。这是为了根据星期几评估当前日期是否在指定的时间范围内(如上一段所述)。

是的,我知道日期在内部是“通用的”,而时区应该只是“为了向用户显示字符串而应用的东西”。以前见过。但如您所见,情况并非如此。有任何想法吗?

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

4

4 回答 4

0

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

于 2013-01-08T01:29:24.573 回答
0

所以,你需要电流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

那是你要找的吗?

于 2013-01-08T01:41:45.523 回答
0
于 2013-01-08T01:55:42.343 回答
0

Since Panama doesn't have daylight saving you can add 5 hours to UTC all year round.

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());
于 2013-01-08T03:05:58.197 回答