【问题标题】:How to get time format to HH:mm using moment js如何使用时刻 js 将时间格式设置为 HH:mm
【发布时间】:2021-07-27 02:58:13
【问题描述】:

我在 React 中工作。我为获得正确的时间格式而烦恼。我正在从下拉列表中选择一个时间并使用moment(inputTime,HH:mm) 来格式化时间,但这就是我得到的。原因是什么? 除了moment(inputTime).format("HH:mm"),还有其他的方法吗?

Moment {_isAMomentObject: true, _i: "Tue May 04 2021 03:53:21 GMT+0530 (India Standard Time)", _isUTC: false, _pf: {…}, _locale: Locale, …}
_d: Tue May 04 2021 03:53:21 GMT+0530 (India Standard Time) {}
_i: "Tue May 04 2021 03:53:21 GMT+0530 (India Standard Time)"
_isAMomentObject: true
_isUTC: false
_isValid: true
_locale: Locale {_calendar: {…}, _longDateFormat: {…}, _invalidDate: "Invalid date", _dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, ordinal: ƒ, …}
_pf: {empty: false, unusedTokens: Array(0), unusedInput: Array(0), overflow: -2, charsLeftOver: 0, …}
__proto__: Object

【问题讨论】:

  • .format("HH:mm") 有什么问题?
  • @HereticMonkey 我会得到一个错误“'isBetween' does not exist on type 'string'. 当我们执行以下代码时。 inputTime.format("HH:mm").isBetween(beforeTime,之后);
  • 你不需要格式化的时刻。仅将.format("HH:mm") 添加到您在视图中显示的位置。
  • 换一种说法。时刻对象(您已记录的内容)包装了 Date 对象,这是您解析的时间值,任意设置为今天的日期并放入浏览器的时区。那一刻对象具有附加到它的isBetween 之类的功能。它不会显示您解析时格式化的时间(从技术上讲,如果您深入研究 _pf 属性,您可能会找到它,但这是您不应该依赖的实现细节)。当您调用format 时,它会获取日期和时区信息并提供时间,并根据需要进行格式化。

标签: javascript reactjs momentjs time-format


【解决方案1】:

通过使用moment(inputTime,HH:mm),您正在创建一个时刻对象。这就是为什么在将这个对象打印到控制台时得到Moment {_isAMomentObject: true, ...}

如果您希望它采用"HH:mm" 的格式,这意味着您希望采用sus-cited 格式的矩对象的字符串表示形式。为此,正确的方法之一是在 moment 对象上使用 format 方法。

var input_time = "10:46";
var date_a = moment(input_time, "HH:mm");
console.log(date_a);
>> Moment {...} // moment object
var date_a_str = date_a.format("HH:mm");
console.log(date_a_str);
>> "10:46" // string

【讨论】:

    猜你喜欢
    • 2018-04-01
    • 2018-02-05
    • 2021-06-09
    • 2016-07-28
    • 2017-11-17
    • 2017-12-09
    • 1970-01-01
    • 2019-09-12
    • 1970-01-01
    相关资源
    最近更新 更多