Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaScript中应用时区后获取日期的组件_Javascript_Date_Time_Timezone - Fatal编程技术网

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

在JavaScript中应用时区后获取日期的组件,javascript,date,time,timezone,Javascript,Date,Time,Timezone,事情是这样的:我目前正在编程一个时间可用性功能 例如: 星期日:上午7:00至晚上9:30。 星期一:上午8时至晚上10时。 星期二:上午7:30至晚上8:30。 等等 其思想是,用户可以指定一个时间范围,在该时间范围内,企业可供公众“使用”。具体的天数无关紧要-无论当前是星期一3号还是星期一10号,为“星期一”指定的时间范围都适用于所有星期一。每个时间范围的开始和结束时间保存为小时字段1-12、分钟字段0-59和时段a.m.或p.m.字段。这样做是必要的,因为这是我的国家特有的,我们这里使用的

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

例如: 星期日:上午7:00至晚上9:30。 星期一:上午8时至晚上10时。 星期二:上午7:30至晚上8:30。 等等

其思想是,用户可以指定一个时间范围,在该时间范围内,企业可供公众“使用”。具体的天数无关紧要-无论当前是星期一3号还是星期一10号,为“星期一”指定的时间范围都适用于所有星期一。每个时间范围的开始和结束时间保存为小时字段1-12、分钟字段0-59和时段a.m.或p.m.字段。这样做是必要的,因为这是我的国家特有的,我们这里使用的是上午/下午,而不是24小时制。当然,因为我们谈论的只是小时和分钟,而不是具体的完整日期,所以在这种情况下我们不应用时区

但是,在另一个地方,我需要一个JavaScript代码来获取当前特定日期的全天和时间,准确地说,将特定时区应用于所述日期美国/巴拿马,然后将该日期分离为其组件我需要为一周中的某一天、日数、小时、分钟和时段a.m.或p.m.提供单独的值。,根据时区。这是为了根据一周中的某一天评估当前日期是否在上一段中解释的指定时间范围内

是的,我知道日期在内部是通用的,时区应该只是用来向用户显示字符串的东西。我以前见过。但正如你所看到的,这里的情况并非如此。有什么想法吗


编辑:抱歉,忘记澄清:解决方案必须在没有第三方脚本的情况下完成。也就是说,我需要纯的、普通的JavaScript。

您应该能够使用类似的库来获取所有这些信息

因此,您需要当前日期:

您需要按时区进行更改:

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
这就是你要找的吗

有必要这样做,因为这是我的国家特有的,我们这里使用的是上午/下午,而不是24小时制

不,你搞错了。这不是数据格式,而是您自定义的输入/输出格式。数据格式可以很容易地存储为值,并使用24小时时钟进行计算。例如,它的单位可以是午夜后的分钟

获取当前日期

你可以用这个

应用特定时区


这在JavaScript中有点复杂。您只有当前环境的时区,对于其他所有内容,您都需要使用变通方法并更改实际UTC日期。这可以通过处理结转等的集合…方法来实现;退房。

由于巴拿马没有夏令时,您可以全年为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());

抱歉,编辑了我的问题以澄清。。。但是,我不能使用那个很酷的图书馆。不能有依赖项。我正在考虑此解决方案。问题是,我不完全确定我可以上传,然后在部署代码的地方需要脚本。它必须上传到Parse.com的云代码中,我以前从未使用过它,所以。。。如果它可以上传并包含在我的.js中,那将是很棒的.Agh,请阅读另一个问题,JavaScript目前没有提供将JavaScript文件包含到另一个文件中的本机方法。因此,基本上我不能在另一个JS中包含一个JS,因此不能在我自己的自定义.JS文件中包含矩.JS。这个JS没有插入HTML文件中,所以…如果需要从javascripts添加javascripts,那么可以:var s=document.createElementscript;s、 src=locationtojs.js;document.head.appends@EmmanuelFiguerola如果您想进行黑客攻击,您可以复制代码并将其包含在javascript文件的顶部。看看您是否可以使用所有用vanilla JS编写的库,并且不需要重新发明轮子。如果您不想包含第三方脚本,那么托管自己的库副本应该没有问题。这样操纵时间不会导致错误吗?例如:假设时区是+7,小时是23。。。它是否会以23+7=30结束,从而成为一个无效的小时?另外,增加这一小时实际上会提前日期吗?也就是说,在小时数为23的日期上增加7小时应该会将日期提前到第二天。是的,它会将日期提前。@EmmanuelFiguerola请参阅-查看“设置日期”部分-注意:如果在日期上增加5天会改变月份或年份,则更改将由日期对象本身自动处理我假设它在数小时内以相同的方式工作。您将需要使用UTC方法,否则会得到错误的值。要使用常规方法,您只需将当前区域与目标区域之间的时区差相加。
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());