我有一个日期选择器返回一个日期字符串,一个时间选择器只返回一个时间字符串。
我应该如何将它们组合成一个 JavaScript 日期?
我以为我在Date.js找到了解决方案。这些示例显示了一个at( )
- 方法,但我在库中找不到它......
您可以将日期选择器配置为返回格式YYYY-mm-dd
(或任何Date.parse
支持的格式),并且您可以在 timepicker 中构建一个字符串,例如:
var dateStringFromDP = '2013-05-16';
$('#timepicker').timepicker().on('changeTime.timepicker', function(e) {
var timeString = e.time.hour + ':' + e.time.minute + ':00';
var dateObj = new Date(datestringFromDP + ' ' + timeString);
});
javascriptDate
对象将字符串作为构造函数参数
将日期和时间组合成这样的字符串:
1997-07-16T19:20:15
然后你可以像这样解析它:
Date.parse('1997-07-16T19:20:15');
你也可以使用moment.js或类似的东西。
对于纯 JavaScript:
combineDateAndTime = function(date, time) {
timeString = time.getHours() + ':' + time.getMinutes() + ':00';
var year = date.getFullYear();
var month = date.getMonth() + 1; // Jan is 0, dec is 11
var day = date.getDate();
var dateString = '' + year + '-' + month + '-' + day;
var combined = new Date(dateString + ' ' + timeString);
return combined;
};
您可以连接日期和时间,然后使用时刻来获取datetime
const date = '2018-12-24';
const time = '23:59:59';
const dateTime = moment(`${date} ${time}`, 'YYYY-MM-DD HH:mm:ss').format();
如果时间由小时、分钟、天或月组成,其值范围为 0-9,例如 getDate()、getMonth() 等,Boateng 的示例将失败...在这些情况下将返回 1 位数字,时间字符串将失败,返回无效日期:
function CombineDateAndTime(date, time) {
const mins = ("0"+ time.getMinutes()).slice(-2);
const hours = ("0"+ time.getHours()).slice(-2);
const timeString = hours + ":" + mins + ":00";
const year = date.getFullYear();
const month = ("0" + (date.getMonth() + 1)).slice(-2);
const day = ("0" + date.getDate()).slice(-2);
const dateString = "" + year + "-" + month + "-" + day;
const datec = dateString + "T" + timeString;
return new Date(datec);
};
不幸的是没有足够的代表发表评论
大卫的例子稍作修改:
function CombineDateAndTime(date, time) {
var timeString = time.getHours() + ':' + time.getMinutes() + ':00';
var ampm = time.getHours() >= 12 ? 'PM' : 'AM';
var year = date.getFullYear();
var month = date.getMonth() + 1; // Jan is 0, dec is 11
var day = date.getDate();
var dateString = '' + year + '-' + month + '-' + day;
var datec = dateString + 'T' + timeString;
var combined = new Date(datec);
return combined;
};
将日期和时间与同样适用于firefox的 moment JS 连接起来,
let d1 = moment().format('MM/DD/YYYY');
let dateTimeOpen = moment(d1 + ' ' + model.openingTime).format('YYYY-MM-DD HH:mm:ss');
let dateTimeClose = moment(d1 + ' ' + model.closingTime).format('YYYY-MM-DD HH:mm:ss');