【问题标题】:How parse current time in an HH:MM format如何以 HH:MM 格式解析当前时间
【发布时间】:2022-01-03 20:13:09
【问题描述】:

我需要转换一个看起来像当前时间的字符串(以小时:分钟为单位):

例如:16:00、17:34、00:19 等 我需要将它们转换为日期对象,如下所示:

Thu Nov 25 2021 17:34:00 GMT+0300(我的本地日期和时区,但当前时间替换为渲染值)。

使用 date-fns 会引发错误:


import parse from "date-fns/parse";
 
const now = new Date()

const a = parse("23:00", "HH:mm", new Date());
console.debug(a);

错误是:

Invalid Date

是什么原因?

【问题讨论】:

  • 你可以做let date = new Date(); date.setHours(hh); date.setMinutes(mm);
  • @Photon ... date.setSeconds(0); date.setMilliseconds(0);

标签: javascript date-fns


【解决方案1】:

这是因为 date-fn 没有将字符串“23:00”视为有效的日期数据

要修复这个 date-fn 实现一个 parse-iso,它接受一个字符串并返回一个有效的 ISO 日期 https://date-fns.org/v2.0.0-alpha.27/docs/parseISO

var parseISO = require('date-fns/parseISO')

const a = parse(parseISO("23:00"), "HH:mm", new Date());
console.debug(a);

取决于 date-fns 版本,但通常按照您的方式解析正在工作 https://codesandbox.io/s/date-fns-forked-dxy95

parse("23:00", "HH:mm", new Date());

如果你想要一个只包含 HH:mm 格式的小时的字符串,你可以这样做

import format from "date-fns/format";
const b = format(new Date(), 'HH:mm');

【讨论】:

【解决方案2】:

let event = new Date();
event.setHours(23,59,59);
console.log(event);

或自定义日期

const event = new Date('Thu Nov 25 2021 17:34:00 GMT+0300');

setHours(hoursValue, minutesValue, secondsValue, msValue)

您可以在 Mozilla 文档中阅读有关这些功能和其他功能的更多信息。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/Date

【讨论】:

    【解决方案3】:

    我现在能想到两种可能性。可能还有更多。一种是使用正则表达式,另一种是使用 Js Date 函数,如下例所示:

    function get_HH_MM() {
      const t = new Date()
      _minutes = t.getMinutes();
      minutes = _minutes.toString().length == 1 ? '0'+_minutes : _minutes.toString();
      return (t.getHours() + ':' + minutes);
    }
    
    console.log(get_HH_MM());

    小提示:输出将是一个字符串。

    【讨论】:

      猜你喜欢
      • 2015-07-04
      • 1970-01-01
      • 2023-03-10
      • 2021-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多