在Node.js中进行日期格式转换

3

我是使用一个表单,用户可以从日期时间选择器中选择dd-mm-yyyy hh:mm:ss格式的日期和时间。现在我想将其转换为yyyy-mm-dd hh:mm:ss格式以存储在MySQL表中。

我尝试了moment.js的用法如下:

console.log(moment(status.date).format('MM/DD/YYYY'));

我需要从一个表单中获取用户从日期时间选择器中选择的日期和时间,然后将其用作status.date字段的值。

请帮忙。


为什么要转换为字符串?只需在预处理语句中传递一个 Date 对象给 node-mysql 即可。 - Amadan
查看格式:http://momentjs.com/docs/#/displaying/format/ - Swaraj Giri
@amadan,后端已经使用php codeigniter构建完成,现在我们正在等待nodejs的api。因此,我们希望将其转换为标准的mysql格式。 - Niranjan N Raju
@SwarajGiri 在那里我们可以更改格式,但是我正在从表单中提供日期,因此我应该能够更改帖子值的格式。 - Niranjan N Raju
如果您输入一个字符串并想要输出一个字符串,您可以通过重新排列部分来消除任何外部库的要求:s.replace(/(^\d\d)(-\d\d-)(\d{4})(.+$)/,'$3$2$1$4') - RobG
3个回答

2

首先将其转换为ISOString,然后使用replace方法消除不需要的部分。

var date = new Date();
date.toISOString().replace(/T/, " ").replace(/\..+/,'')

source: chbrown's answer


不确定那是否适合。它返回的时间是UTC时间。虽然没有明确说明,但OP似乎想要本地时间。我记得并非所有实现都返回小数秒,但对于node.js可能不是问题。 - RobG

2
您可以这样做,而不是使用一些模块。
var fd = status.date;
var fromDate = fd.split(" ");
console.log(formatDate(fromDate[0],fromDate[1] + " " + fromDate[2]));// 

并在那里添加这些功能。
function formatDate(date, time2) {
    var from = date.split("-");
    var f = from[2] + "-" + from[1] + "-" + from[0];
    var time1 = time(time2);

    return f + " " + time1;
}

function time(time) {
    var hours = Number(time.match(/^(\d+)/)[1]);
    var minutes = Number(time.match(/:(\d+)/)[1]);
    var AMPM = time.match(/\s(.*)$/)[1];
    if ((AMPM == "PM" || AMPM == "pm") && hours < 12)
        hours = hours + 12;
    if ((AMPM == "AM" || AMPM == "am") && hours == 12)
        hours = hours - 12;
    var sHours = hours.toString();
     if (hours < 10)
        sHours = "0" + sHours;
    if (minutes < 10)
        sMinutes = "0" + sMinutes;
   return (sHours + ":" + sMinutes);

}


但是,有没有内置的方法来完成这个任务,而不是自己编写代码? - Niranjan N Raju

0

Prateek Jain的ISOString方法的基础上,我们可以使用toLocaleString来获取本地时间的ISO格式。

根据不同的地区,需要根据toLocaleString提供的基本格式进行调整。最接近ISO的格式是en-CA(请参阅此答案以获取所有基于地区的格式)。然后,我们使用选项{hour12: false}将其转换为24小时制。

const d = new Date();
d.toLocaleString('en-CA', {hour12: false}).replace(/, /, ' ');

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接