节点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中的日期格式转换的主要内容,如果未能解决你的问题,请参考以下文章