我有两个日期变量分别如下
startDate
是一个 Date
实例,其值为 Tue Jul 17 2012 00:00:00 GMT+0530 (IST)
startTime
是一个 String
,值为 "11:30 AM"
现在我需要的是将上述日期和时间合并为 Date
。
startDateTime
= 2012 年 7 月 17 日星期二 11:30:00 GMT+0530 (IST)
我试过了
new Date(startDate + ""+ startDate)
但输出无效日期
。
也尝试了这个 post 上显示的方式.但还是不行。
最佳答案
如果 startTime
是明确定义的格式,您可以轻松解析它,然后使用 setHours
和 setMinutes
:Live example | source
var startDateTime;
var parts = /^(\d+):(\d+) (AM|PM)$/.exec(startTime);
if (parts) {
hours = parseInt(parts[1], 10);
minutes = parseInt(parts[2], 10);
if (parts[3] === "PM" && hours !== 12) {
hours += 12;
}
else if (parts[3] === "AM" && hours === 12) {
hours = 0;
}
if (!isNaN(hours) && !isNaN(minutes)) {
startDateTime = new Date(startDate.getTime());
startDateTime.setHours(hours);
startDateTime.setMinutes(minutes);
}
}
...或类似的东西。
请注意,关键是您说过 startDate
是一个 Date
实例。上面假设我们在 JavaScript 环境的时区内工作,而不是跨区域工作。如果您以日期 string 开头,并且该字符串指定了 JavaScript 环境时区以外的时区,然后您将通过 new 将其转换为
,那么您必须确保调整生成的 Date
Date("Tues Jul....")Date
以使用环境的本地时间或 UTC;如果您将其调整为 UTC,您将使用上面的 setUTCHours
和 setUTCSeconds
而不是 setHours
和 setSeconds
。同样,如果您的起点是日期字符串,并且该字符串指定的时区与上述代码运行的时区不同,这只是一个问题。 p>
关于javascript日期和时间加入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11577133/