Javascript 正确的储蓄方式是什么;办公时间“;数据?
我正在开发一个应用程序,它要求用户设置他们的“办公时间”,也就是说他们可以在什么时间使用。 我在想如何正确设置它时遇到了困难。当涉及到时间和日期时,我通常会将其保存为日期对象,或者在某些情况下保存为时间戳 不同的是,我不需要保存特定的时间,而是一天中的一系列时间(以及每天不同的时间范围)。 如果我使用一个简单的数据/时间戳,那么它将总是超出范围,因为它将在过去 存储这些数据的正确方法是什么? 我正在构建的内容将在全球范围内使用,因此在检查该配置文件是否在办公时间内时,时区也至关重要Javascript 正确的储蓄方式是什么;办公时间“;数据?,javascript,Javascript,我正在开发一个应用程序,它要求用户设置他们的“办公时间”,也就是说他们可以在什么时间使用。 我在想如何正确设置它时遇到了困难。当涉及到时间和日期时,我通常会将其保存为日期对象,或者在某些情况下保存为时间戳 不同的是,我不需要保存特定的时间,而是一天中的一系列时间(以及每天不同的时间范围)。 如果我使用一个简单的数据/时间戳,那么它将总是超出范围,因为它将在过去 存储这些数据的正确方法是什么? 我正在构建的内容将在全球范围内使用,因此在检查该配置文件是否在办公时间内时,时区也至关重要 我没有任何
- 我没有任何开始代码或工作要展示,因为我不知道如何开始
我会考虑这个格式。示例适用于Sidney中的用户
{ "tz":["+10:00","en-AU","Australia/Sydney"], // official ISO JS strings
"weekStart":1, // Monday
"week": [
[null,null], // Sunday
["8:30","17:30"],
["8:30","17:30"],
["8:30","17:30"],
["8:30","17:30"],
["8:30","17:30"],
[null,null]
]
}
似乎您可能需要存储每个日期的ST和DST,可能还需要存储切换日期,或者将其存储在服务器上
- 夏时制AEDT:澳大利亚东部夏时制UTC+11
- 标准时间AEST:澳大利亚东部标准时间UTC+10(当前日期为2020年6月11日)
const workHours={“tz”:[“+10:00”,“en-AU”,“澳大利亚/悉尼],//官方ISO JS字符串
“weekStart”:1,//星期一
“一周”:[
[null,null],//星期日
["08:30","17:30"],
["08:30","17:30"],
["08:30","17:30"],
["08:30","17:30"],
["08:30","17:30"],
[零,零]
]
};
常量选项={
小时:“数字”,分钟:“数字”,秒:“数字”,
时区:workHours.tz[2],
时区名称:“短”
};
让我们现在=新日期();
console.log(workHours.tz[2],`${now.toISOString().split(“T”)[0]}T${workHours.week[now.getDay()][0]}:00.000${workHours.tz[0]})
让开始=新日期(`now.toISOString().split(“T”)[0]}T${workHours.week[now.getDay()][0]}:00.000${workHours.tz[0]})
让end=newdate(`now.toISOString().split(“T”)[0]}T${workHours.week[now.getDay()][1]}:00.000${workHours.tz[0]})
console.log(“UTC”,开始,结束);//可用时间
//现在一切正常
log(新的Intl.DateTimeFormat(workHours.tz[1],options).format(start));
log(新的Intl.DateTimeFormat(workHours.tz[1],options).format(end))代码> 我会考虑这个格式。示例适用于Sidney中的用户
{ "tz":["+10:00","en-AU","Australia/Sydney"], // official ISO JS strings
"weekStart":1, // Monday
"week": [
[null,null], // Sunday
["8:30","17:30"],
["8:30","17:30"],
["8:30","17:30"],
["8:30","17:30"],
["8:30","17:30"],
[null,null]
]
}
似乎您可能需要存储每个日期的ST和DST,可能还需要存储切换日期,或者将其存储在服务器上
- 夏时制AEDT:澳大利亚东部夏时制UTC+11
- 标准时间AEST:澳大利亚东部标准时间UTC+10(当前日期为2020年6月11日)
如果不想使用矩或,可以使用
const workHours={“tz”:[“+10:00”,“en-AU”,“澳大利亚/悉尼],//官方ISO JS字符串
“weekStart”:1,//星期一
“一周”:[
[null,null],//星期日
["08:30","17:30"],
["08:30","17:30"],
["08:30","17:30"],
["08:30","17:30"],
["08:30","17:30"],
[零,零]
]
};
常量选项={
小时:“数字”,分钟:“数字”,秒:“数字”,
时区:workHours.tz[2],
时区名称:“短”
};
让我们现在=新日期();
console.log(workHours.tz[2],`${now.toISOString().split(“T”)[0]}T${workHours.week[now.getDay()][0]}:00.000${workHours.tz[0]})
让开始=新日期(`now.toISOString().split(“T”)[0]}T${workHours.week[now.getDay()][0]}:00.000${workHours.tz[0]})
让end=newdate(`now.toISOString().split(“T”)[0]}T${workHours.week[now.getDay()][1]}:00.000${workHours.tz[0]})
console.log(“UTC”,开始,结束);//可用时间
//现在一切正常
log(新的Intl.DateTimeFormat(workHours.tz[1],options).format(start));
log(新的Intl.DateTimeFormat(workHours.tz[1],options).format(end))
所以你只需要tz,day,hh:mm hh:mm
?@mplungjan是的,但它需要独立于实际的纪元时间。例如,比较我所拥有的星期日数据,无论是现在还是将来,每个星期日的数据都应该相同@mplungjan的例子中没有任何与历元或任何其他特定时间点相关的内容。例如,“美国/纽约”、“周日”、“09:00-17:00”
@Phil my bad。我以为他的问题是在给出解决方案之前获取更多信息,但我没有意识到这就是解决方案。所以我只保留这些,然后根据时区手动进行转换?我之所以说手动,是因为当以日期格式保存时,转换会自动进行,所以您只需要tz,day,hh:mm hh:mm
?@mplungjan是的,但它需要独立于实际纪元时间。例如,比较我所拥有的星期日数据,无论是现在还是将来,每个星期日的数据都应该相同@mplungjan的例子中没有任何与历元或任何其他特定时间点相关的内容。例如,“美国/纽约”、“周日”、“09:00-17:00”@Phil my bad。我以为他的问题是在给出解决方案之前获取更多信息,但我没有意识到这就是解决方案。所以我只保留这些,然后根据时区手动进行转换?我之所以说手动,是因为当以日期格式保存时,转换会自动进行。我会小心存储偏移量。您必须使用DSTOk使其保持最新状态谢谢!这让我对通常的做法有了更好的理解@菲尔:那你有什么建议?@Tsabary,比如“美国/安克雷奇”。库可以为您处理这些给定的特定点time@Tsabary我已经更新为包含实际的偏移小时数,以便更容易创建时间并在用户的区域设置中显示时间