使用javascript将日期和时间字符串合并为单个日期

x7yiwoj4  于 2023-01-04  发布在  Java
关注(0)|答案(8)|浏览(196)

我有一个返回日期字符串的日期选择器,和一个只返回时间字符串的时间选择器。
我应该如何将这些组合成一个单独的javascript日期?
我以为我在Date.js中找到了一个解决方案。示例显示了一个at( )方法,但我在库中找不到它...

pengsaosao

pengsaosao1#

您可以将日期选择器配置为返回YYYY-mm-dd(或Date.parse支持的任何格式),并且可以在时间选择器中构建如下字符串:

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

javascript Date对象接受字符串作为构造函数参数

jv4diomz

jv4diomz2#

将日期和时间组合成如下字符串:

1997-07-16T19:20:15

然后你可以像这样解析它:

Date.parse('1997-07-16T19:20:15');

您也可以使用moment.js或类似的命令。

8nuwlpux

8nuwlpux3#

对于纯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;
};
wnavrhmk

wnavrhmk4#

您可以连接日期和时间,然后使用moment来获得datetime

const date = '2018-12-24';
const time = '23:59:59';

const dateTime = moment(`${date} ${time}`, 'YYYY-MM-DD HH:mm:ss').format();
yqhsw0fo

yqhsw0fo5#

Boateng的示例在时间由小时、分钟、天或月组成的情况下失败,这些时间的值范围为0-9,因为getDate()、getMonth()等...在这些情况下将返回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);
};

很遗憾,没有足够的代表发表评论

doinxwow

doinxwow6#

大卫的例子稍作修改:

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;
};
s3fp2yjn

s3fp2yjn7#

用同样适用于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');
ntjbwcob

ntjbwcob8#

const date = "2022-12-27";
const time = "16:26:42";

new Date(`${date}T${time});

输出

Date Tue Dec 27 2022 16:26:42 GMT+0100 (Central European Standard Time)

相关问题