Moment.js - 格式化现有时间?

时间:2018-02-15 11:41:09

标签: node.js momentjs

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

以下是该方案:

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

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

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

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

然而,当我调用此函数并传递时间(从数据库中获取)时,我得到“无效时间”。我做错了什么?

1 个答案:

答案 0 :(得分:0)

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

我猜你做错了什么并没有说明你发回的是什么,也就是说它不理解你提供的格式化字符串。

注意格式值HH:mm:ss在不同情况下会有所不同。案例很重要,应根据您的要求进行设置。 enter image description here

// 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/#/parsing/

// 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);