节点js中的日期格式转换

Posted

技术标签:

【中文标题】节点js中的日期格式转换【英文标题】:Date format conversion in node js 【发布时间】:2015-11-19 23:07:23 【问题描述】:

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

我尝试过这样的时刻 js

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

status.date 我将在用户从 datetimepicker 中选择日期时间的表单中发布。

请帮忙

【问题讨论】:

为什么要转换成字符串?只需在准备好的语句中给node-mysql 一个Date 对象。 查看格式momentjs.com/docs/#/displaying/format @amadan,后端已经内置在 php codeigniter 中,现在我们正在等待 nodejs 中的 api。所以我们要转换成标准的mysql格式。 @SwarajGiri 那里我们可以更改格式,但我从表格中给出日期,所以我应该能够更改帖子值的格式。 如果您输入一个字符串并想要输出一个字符串,您可以通过重新排列部分来删除任何外部库要求:s.replace(/(^\d\d)(-\d\d-)(\d4)(.+$)/,'$3$2$1$4') 【参考方案1】:

先转换成ISOString,再用replace方法去掉不需要的东西。

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

source: chbrown's answer

【讨论】:

不确定是否适合。它以 UTC 格式返回时间。 OP 似乎想要本地的,尽管没有明确说明。我似乎记得并非所有实现都返回小数秒,但不确定(并且可能不是 node.js 的问题)。【参考方案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);

【讨论】:

但是,有没有内置的方法可以代替我们自己编写代码??【参考方案3】:

在Prateek Jain's ISOString method的基础上,我们可以使用toLocaleString获取ISO格式的当地时间

需要根据不同地区选购toLocaleString提供的基本格式。最接近 ISO 的格式是 en-CA(有关所有基于区域的格式,请参阅 this answer)。然后我们使用选项 hour12: false 转换为 24 小时制。

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

【讨论】:

以上是关于节点js中的日期格式转换的主要内容,如果未能解决你的问题,请参考以下文章

JS日期格式的转换

JS中,JSON数组中日期格式转换的问题

使用 laravel 转换 vue js 中的日期格式

将 dd-MMM-YYYY 格式的日期转换为 JS 中的日期或 dd/mm/yyyy 格式

js怎么把时间戳转换为日期格式

js中怎么吧long型的日期转换成String类型的