javascript日期和日期;时间连接

javascript日期和日期;时间连接,javascript,datetime,Javascript,Datetime,我有两个日期变量,分别如下 startDate是值为2012年7月17日星期二00:00:00 GMT+0530(IST) startTime是一个字符串,其值为“上午11:30” 现在我需要的是将上述日期和时间合并为日期 startDateTime=2012年7月17日星期二11:30:00 GMT+0530(IST) 我试过了 新日期(startDate+“”+startDate)但输出的日期无效 也尝试了这张照片上显示的方式。但是仍然不起作用。您可以很容易地解析startTime,如果它是

我有两个日期变量,分别如下

startDate
是值为
2012年7月17日星期二00:00:00 GMT+0530(IST)

startTime
是一个
字符串,其值为
“上午11:30”

现在我需要的是将上述日期和时间合并为
日期

startDateTime
=
2012年7月17日星期二11:30:00 GMT+0530(IST)

我试过了

新日期(startDate+“”+startDate)
但输出的
日期无效


也尝试了这张照片上显示的方式。但是仍然不起作用。

您可以很容易地解析
startTime
,如果它是明确定义的格式,那么使用
setHours
setMinutes

…或者类似的东西

请注意,关键是您已经说过
startDate
是一个
Date
实例。以上假设我们在JavaScript环境的时区内工作,而不是跨区域工作。如果改为以日期字符串开始,并且该字符串指定了JavaScript环境时区以外的时区,然后通过
新日期(“7月周二”)
将其转换为
日期
,然后,您必须确保调整生成的
日期
,以使用环境的本地时间或UTC;如果您将其调整为UTC,您将使用上面的
setUTCHours
setUTCSeconds
而不是
setHours
setSeconds
。同样,如果您的起始点是日期字符串,并且该字符串指定的时区与上面代码运行的时区不同,则这只是一个问题。

请重试

new Date(startDate.toDateString() + " " + startTime)
这会将
date
对象中的日期字符串与时间字符串组合在一起,并为您提供一个有效的日期。请注意,这会忽略您最初使用的时区,您可能需要再次添加
“GMT+0530”

但是,由于您的日期字符串已经存在时区偏差(2012年7月16日,UTC 20:30:00),因此最好将它们相加,例如
新日期(+startDate+毫秒)

您可以这样做:

var theDate = new Date("Tue Jul 17 2012 00:00:00 GMT+0530 (IST)");
var theTime = "11:30 AM";
var hours = theTime .substr(0,2);
var minutes = theTime .substr(3,2);
var amOrPm = theTime .substr(6,2);
if (hours < 12 && "PM" == amOrPm) {
    hours = +hours + 12;
}
theDate.setHours(hours);
theDate.setMinutes(minutes);
var theDate=新日期(“2012年7月17日星期二00:00:00 GMT+0530(IST)”;
var theTime=“上午11:30”;
var小时=时间substr(0,2);
var minutes=时间substr(3,2);
var amOrPm=时间substr(6,2);
如果(小时数<12&“PM”==下午){
小时数=+小时数+12;
}
设定时间(小时);
日期。设置分钟(分钟);

您是否尝试过date.js javascript库?它可以转换/解析许多日期格式。是
startDate
startTime
字符串吗?@JonasT,还是我更喜欢的字符串。moment.js的优点是在过去几年中一直维护,而DateJS没有维护。@RikeshShah:要改进一个问题,请使用它下面的“编辑”链接。我在这个场合为你做了这些。谢谢!!工作完美:)@RikeshShah:如果
AM
/
PM
可能是小写,那么您可能需要稍微调整它,等等,但这就是要点。但一定要查看moment.js。@Crowder-我会接受的。现在我无法在现有源代码中添加任何js。由于时区的原因,此代码将无法工作。您必须添加小时和分钟的时间戳实际上是2012年7月16日20:30:00UTC@Bergi:这很好,
setMinutes
在时区内工作,同一JavaScript执行环境中的所有
Date
对象共享同一时区(“本地”时间)。如果我使用了/
setUTCMinutes
,现在这将是一个问题。:-)是吗?您使用了哪些值,传递给构造函数的字符串是什么?对我有效。这将导致2012-07-16T11:30:00,正确的时间戳将是2012-07-17T07:00:00(两个UTC)
var startDate = new Date("Tue Jul 17 2012 00:00:00 GMT+0530");
var startTime = "11:30 AM";
return new Date(+startDate + +new Date("1 1 1970 "+startTime))
var theDate = new Date("Tue Jul 17 2012 00:00:00 GMT+0530 (IST)");
var theTime = "11:30 AM";
var hours = theTime .substr(0,2);
var minutes = theTime .substr(3,2);
var amOrPm = theTime .substr(6,2);
if (hours < 12 && "PM" == amOrPm) {
    hours = +hours + 12;
}
theDate.setHours(hours);
theDate.setMinutes(minutes);