javascript 日期或下一个日期基于一天中的时间和 if/else
javascript Date or next date based on time of day and if/else
我想在我的网站上显示我当前的运输时间。 每天我都有下午 2:00 的剪辑时间,并希望日期更改为下一个工作日。现在我必须每天手动更改它
Currently Shipping:
Tuesday, April, 24th
Cut-off Time:
2:00 pm PST
我已经做了足够的研究,相信这是可能的,但我对自己操纵剧本的了解还不够多,无法将这些片段放在一起。
两点钟通常不会改变,所以我希望我可以使用脚本在指定时间自动更改(只是日、月和日期)
请告知谢谢!
到目前为止,我试图将什么放在一起
var currentTime = new Date();
var month = currentTime.getDay();
var month = currentTime.getMonth() + 1;
var date = currentTime.getDate();
var thehour = datetoday.getHours();
if(thehour < 14) { document.write(day + "," + month + "," + date) }
else if (thehour > 14) ...
首先,您必须在服务器上执行此操作,因为客户端计算机不知道正确的时区偏移量(可能是 -8 小时或 -7 小时,具体取决于是否是夏令时),并且客户端时钟可能未准确设置(或可能故意设置不正确)。
因此,如果您要将偏移量发送给客户端,则不妨只发送时间。当您发送区域时,不要只发送 PST,因为这对许多人来说是模棱两可的,而是发送实际偏移量(UTC -8 或 -7 视情况而定)。或者以 UTC 格式发送截止时间,让用户计算出来。
例如,要将本地时间转换为其他时区,您可以执行以下操作:
var pstOffset = 480; // Standard time offset
var pdtOffset = 420 // Daylight saving offset
var now = new Date();
// Adjust to PST
now.setMinutes(now.getMinutes() + now.getTimezoneOffset() - pstOffset);
alert(now); // Time in PST
但请注意,日期对象仍位于本地时区,因为您无法更改实际偏移量,只能调整时间以允许它。
要发送截止时间并将其转换为本地时间,最简单的方法是发送 UTC 时间戳并在本地框中进行转换,因此:
var ts = '2012-04-24T08:00:00Z'; // UTC cut-off for standard time on 24/4
var tsd = '2012-04-24T07:00:00Z'; // UTC cut-off for daylight saving time on 24/4
function utcToLocal(s) {
var bits = s.split(/[-T:Z]/g); // Split string into useful bits
var d = new Date();
// Set local date object to UTC supplied time
d.setUTCFullYear(bits[0], bits[1] - 1, bits[2]);
d.setUTCHours(+bits[3], +bits[4], +bits[5]);
return d;
}
alert( 'Your clock says it''s now ' + (new Date()) +
''nThe cut-off for shipping is ' + utcToLocal(ts));
并根据服务器时间发送适当的 UTC 时间戳(例如,如果他们错过了 4 月 24 日的发货时间,请向他们发送 4 月 25 日的发货时间)。
编辑
这是一个完整的解决方案,但请记住,我已经说过不要在客户端上执行此操作:
/* Get the cut-off of 2pm PST or PDT on current or
* next working day. If d is true (e.g. 1) use PDT,
* otherwise use PST
**/
function setCutoffTime(d) {
var pstOffset = 480; // PST offset in minutes
var psdOffset = 420; // PDT offset in minutes
var now = new Date();
var addDays = 0;
var cutoff;
var days = 'Sun Mon Tue Wed Thu Fri Sat Sun'.split(' ');
var months = 'Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec'.split(' ');
// Utility to add a leading zero
function addZ(n) {
return (n<10?'0':'') + n;
}
// Convert to PST time
now.setMinutes(now.getMinutes() +
now.getTimezoneOffset() - (d? psdOffset : pstOffset));
// If after 2pm, push to tomorrow
if (now.getHours() > 14) now.setHours(now.getHours() + 12);
// If on a weekend, push to Monday
if (now.getDay() == 6) addDays = 2;
if (now.getDay() == 0) addDays = 1;
now.setDate(now.getDate() + addDays);
// Now on working day pre 2pm, so set time to 14:00
now.setHours(14, 0, 0);
// And convert back to local time
now.setMinutes(now.getMinutes() - now.getTimezoneOffset() +
(d? psdOffset : pstOffset));
// Return a formatted string - should be a separate function
return 'Shipping cut-off: ' +
addZ(now.getHours()) + ':' +
addZ(now.getMinutes()) + ' on ' +
days[now.getDay()] + ', ' +
now.getDate() + ' ' +
months[now.getMonth()] +
', ' + now.getFullYear();
}
alert(setCutoffTime()); // Cut-off for PST
alert(setCutoffTime(true)); // Cut-off for PDT
相关文章:
- 更改angularjs中的日期-时间格式
- 将日期时间作为 JSON 发送将无法在我的视图中正确显示
- 将日期时间从json转换为可读格式
- 使用时刻.js从日期时间中提取时间
- 两个日期时间选择器
- Javascript:如何在onChange事件期间更改日期时间值
- .Net webApi ISO日期时间和IE8
- Javascript-如何使用bootstrap日期时间选择器自动计算两个时间输入之间的差异
- 转换日期时间格式
- 在JavaScript中转换日期/时间格式
- JavaScript JSON关联对象键和值都作为日期时间戳
- 将日期时间javascript绑定到表列
- 将JS日期解析为C#日期时间
- 使用JavaScript将客户端日期/时间字符串转换为JSON日期/时间串
- 从javascript数组获取php的日期时间
- 格式化momentjs日期时间
- 这个正则表达式的日期/时间有什么问题
- Mongoose查询在两个日期时间之间提取数据
- 当转换为Python日期时间时,Node的时间戳落后3分钟
- 自定义angularjs过滤器日期时间格式额外字符