【问题标题】:Get Date with only given specific time - for today获取仅给定特定时间的日期 - 今天
【发布时间】:2020-09-13 12:20:15
【问题描述】:

我需要获取当天特定时间的日期时间。 我的输入是时间字符串,例如13:45

我试着用这种方式得到它:

const time: String = '13:45'
const result: Date = moment(moment().format('L') + ' ' + time + ':00').toDate()
console.log(result) // Invalid Date

也许不需要momentJS就可以完成这项工作?

【问题讨论】:

    标签: javascript typescript datetime momentjs


    【解决方案1】:

    拆分输入字符串,提取小时和分钟。之后,创建一个Date 实例并使用Date 类提供的Date.prototype.setHours()Date.prototype.setMinutes() 方法设置小时和分钟。

    const input = '13:45';
    const [hour, minutes] = input.split(':');
    
    const today = new Date();
    today.setHours(hour);
    today.setMinutes(minutes);
    
    console.log(today);

    Date.prototype.setHours() 方法还采用可选的分钟、秒和毫秒作为参数。所以你可以只使用setHours() 方法

    const input = '13:45';
    const today = new Date();
    today.setHours(...input.split(':'));
    
    console.log(today);

    编辑:

    由于您使用的是Typescript,为避免在第二个代码sn-p中使用扩展语法时出现错误,您可以将代码更改为如下所示:

    const input = '13:45';
    const today = new Date();
    today.setHours(...input.split(':').map(Number) as  [number, number]);
    
    console.log(today);
    

    【讨论】:

    • 像第二个短的一样,但它会用打字稿抱怨setHours需要1到4个参数
    【解决方案2】:

    var date = new Date();
    date.setHours(13);
    date.setMinutes(45);
    
    alert(date);

    【讨论】:

    • 您可以一口气完成:date.setHours(13,45,0,0)。 :-)
    【解决方案3】:

    只需使用moment()解析

    const time = '13:45'
    const result = moment(time, 'HH:mm').format()
    
    console.log(result)
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.27.0/moment.min.js" integrity="sha256-ZsWP0vT+akWmvEMkNYgZrPHKU9Ke8nYBPC3dqONp1mY=" crossorigin="anonymous"></script>

    【讨论】:

      猜你喜欢
      • 2023-03-25
      • 1970-01-01
      • 2019-11-07
      • 1970-01-01
      • 2011-08-28
      • 1970-01-01
      • 2011-01-08
      • 2016-02-26
      • 1970-01-01
      相关资源
      最近更新 更多