将日期和时间合并为一个时刻对象以与今天进行比较

时间:2018-09-12 09:43:27

标签: reactjs datetime momentjs

我目前正在我的React项目中实现时刻,以格式化数据库中设置的用于发送通知的时间表的日期。我的系统有一个仪表板,显示计划发送的所有通知及其各自的日期。数据库当前有两列用于记录计划的日期和时间-schedule_dateschedule_time-当前,我使用以下代码在仪表板上显示它们:

{moment(file.schedule.schedule_date).format('DD/MM/YYYY')}
{moment(file.schedule.schedule_time, 'HH:mm:ss').format('h:mma')}

schedule_date的格式为YYYY-MM-DDschedule_time的格式为HH:MM:SS(伪)。但是,我现在需要能够将此日期与当前日期进行比较以确定是否已超过设置的通知时间表。我使用以下代码获取今天的日期和时间:

let now = moment();

但是我很难将其与数据库中的实际日期/时间进行比较。我不想只与日期进行比较,因为如果通知原定于上午9:00发出,而现在是上午10.00,则仅将日期与日期进行比较,仍会假设它尚未发送。

有没有办法在前端进行这种比较?

1 个答案:

答案 0 :(得分:1)

您可以通过以下方式将时间设置为日期对象:

var date = '2018-09-12T00:00:00Z';
var time = '16:00:00';

var momentDate = moment(date);
var momentTime = moment(time, 'HH:mm:ss');

momentDate = momentDate.set({
  hour: momentTime.get('hour'),
  minute: momentTime.get('minute'),
  second: momentTime.get('second')
});

console.log(momentDate.format());
console.log(momentDate.isAfter(moment.now()));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.js"></script>

您还可以尝试像这样直接从日期和时间字符串创建iso日期格式:

var fullDate = date + 'T' + time + 'Z';