【问题标题】:Moment.js - formatting an existing time?Moment.js - 格式化现有时间?
【发布时间】:2018-02-15 11:41:09
【问题描述】:

我正在使用 moment.js 来处理 node.js 中的日期和时间。到目前为止,我已经能够用它做所有我需要的事情,但是我在格式化时间时遇到了问题。

这是场景:

用户输入记录在数据库中的数据(整数)以及日期(格式为 YYYY-MM-DD)和时间(格式为 HH:MM:SS)。

下次用户输入数据时,会读入前一个值并比较(高于、低于或等于)新值。但是,我还想显示一条消息,例如“您最后一次提交数据是在 TIME on DATE”。在这种情况下,我希望时间以不同的格式显示(例如“h:mm a”,即“12:34 pm”)。

我可以使用 moment 来格式化现有日期,还是可以仅返回当前日期/时间?在我的代码中,我有以下功能:

function userFormattedTime(time)
{
    let uTime = moment(time).format('h:mm a');
    return uTime
}

但是,当我调用此函数并传递时间(取自数据库)时,我得到“无效时间”。我做错了什么?

【问题讨论】:

标签: node.js momentjs


【解决方案1】:

您可以将字符串从字符串解析回时刻对象,然后您可以使用时刻将日期重新格式化为任何其他格式。

我猜你做错了什么没有告诉你要发回什么,即它不理解你提供的格式化字符串。

注意格式值 HH:mm:ss 因大小写而异。案例很重要,应根据您的要求进行设置。 https://momentjs.com/docs/#/parsing/

// Original date time string
var rawDateTime = "02-02-2018 10:20:30";

// convert string to a moment object
var originalDate = moment(rawDateTime, "MM-DD-YYYY HH:mm:ss");

// Format a new string from the moment object
var newFormattedString = originalDate.format('h:mm a');

为了计算矩对象的差异,您可以使用 diff 函数。 https://momentjs.com/docs/#/displaying/difference/

// Two different dates
var dateOne = moment("02-02-2018 10:20:30", "MM-DD-YYYY HH:mm:ss");
var dateTwo = moment("04-04-2018 10:20:30", "MM-DD-YYYY HH:mm:ss");

// Get the difference of the two dates
var diff = dateOne.diff(dateTwo);

【讨论】:

  • 好的,我试试看!
  • 我刚刚注意到您还想获得两个值之间的差异,即更高、更低和相等。 moment 的 diff 函数很适合这个:momentjs.com/docs/#/displaying/difference
  • 谢谢,我也试试看!
  • 好的,您对解析日期的建议似乎奏效了!非常感谢!
猜你喜欢
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-24
  • 1970-01-01
  • 2021-09-07
  • 1970-01-01
相关资源
最近更新 更多