【问题标题】:Merging a date and time into one moment object to compare against today将日期和时间合并到一个时刻对象中以与今天进行比较
【发布时间】:2018-09-12 09:43:27
【问题描述】:

我目前正在我的 React 项目中实现 moment 以格式化数据库中设置的时间表日期以发送通知。我的系统有一个仪表板,显示所有计划发出的通知及其各自的日期。数据库目前有两列用于记录预定的日期和时间 - 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 点发出,而现在是上午 10 点,如果只与日期进行比较,它仍然会假定它尚未发送。

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

【问题讨论】:

    标签: reactjs datetime momentjs


    【解决方案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';
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-22
      • 1970-01-01
      • 2014-02-12
      • 2017-07-02
      • 2012-05-10
      • 2013-04-06
      相关资源
      最近更新 更多