在javascript中转换字符串日期

converting string dates in javascript

本文关键字:字符串 日期 转换 javascript      更新时间:2023-09-26

我一直在使用CSV文件,其中一些文件包含日期,现在我想将它们存储在数据库中,但是我面临一个问题。

我有这样一个日期:2016年2月10日而它是这样的:10-02-2016

但到目前为止我一直在尝试使用日期。解析函数给出了一些不同的东西这是我尝试使用的代码

var d = '13-jan-2016';
var e = Date.parse('13-jan-2016')
var m = new Date( e).toISOString()
console.log(m)

我也尝试过使用分割函数,但仍然有一些数字,我不明白为什么他们在那里或我缺乏理解,当它涉及到javascript的parse()函数

您可以使用日期库,比如广受喜爱的MomentJS,或者您可以自己编写一两个简单的函数来处理它,就像这样:

function zeroPad(v) {
  return v >= 10 ? v : "0" + v;
}
function formatDate(s) {
  var d = new Date(Date.parse('13-jan-2016'));
  return zeroPad(d.getDate()) + "-" + zeroPad(d.getMonth() + 1) + "-" + d.getFullYear();
}
console.log(formatDate('13-jan-2016')); // '13-01-2016'

…除了Jaromanda X指出,Date.parse()在某些(大多数)浏览器中无法可靠地处理特定格式(尽管它在Chrome中对我来说工作得很好)。鉴于您似乎没有实际使用日期作为日期,您只是将其从一种已知格式转换为另一种格式,您可以做以下操作,即使在旧的浏览器中也可以工作,如IE<9,根本不支持Date.parse():

function formatDate(s) {
  var months = { 'jan': '01', 'feb': '02', 'mar': '03', 'apr': '04', 'may': '05', 'jun': '06', 'jul': '07', 'aug': '08', 'sep': '09', 'oct': '10', 'nov': '11', 'dec': '12' };
  return s.replace(/[a-z]{3}/i, function(m) { return months[m.toLowerCase()]; });
}
console.log(formatDate('13-jan-2016')); //
console.log(formatDate('02-apr-2016')); //
console.log(formatDate('25-DEC-2016')); //

我想建议一个方便的第三方http://momentjs.com/docs/#/parsing/string-format,有了这个库,它可以这样做:

moment('13-jan-2016', 'DD-MMM-YYYY').format('DD-MM-YYYY')

您正在寻找的不是真正的ISO字符串。如果你不想使用图书馆,我认为这是你最好的选择。来源:http://www.w3schools.com/jsref/jsref_getmonth.asp' ' '

var month = new Array();
month[0] = "January";
month[1] = "February";
month[2] = "March";
month[3] = "April";
month[4] = "May";
month[5] = "June";
month[6] = "July";
month[7] = "August";
month[8] = "September";
month[9] = "October";
month[10] = "November";
month[11] = "December";
var date = new Date('13-jan-2016')
var str = date.getDate() + '-' + month[date.getMonth()] + '-' + date.getFullYear()

' ' '

如果期望的输入字符串格式是相同的'13-Jan-2016'下面是一个例子

var dateString = '13-Dec-2015';
var date = new Date(dateString);
var month = date.getMonth() + 1;
month = ('0' + month).slice(-2);
var dateArray = dateString.split('-');
date = dateArray[0]+'-'+month+'-'+dateArray[2];
console.log(date); //13-12-2016