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);