我正在使用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
}
然而,当我调用此函数并传递时间(从数据库中获取)时,我得到“无效时间”。我做错了什么?
答案 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);