在javascript中转换字符串日期

时间:2016-10-05 02:59:56

标签: javascript

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

我有这样的日期:2016年2月10日 并且它是这样的:10-02-2016

但到目前为止,我一直在尝试使用date.parse函数,这里给出了一些不同的东西,这是我尝试使用的代码

var d = '13-jan-2016';
var e = Date.parse('13-jan-2016')
var m = new Date( e).toISOString()
console.log(m)
我也试过使用split函数但是仍然有一些数字我不明白它们为什么存在或者我在javascript中的parse()函数时缺乏理解

4 个答案:

答案 0 :(得分:1)

您可以使用日期库,例如备受喜爱的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这样的旧浏览器中也可以使用t根本不支持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')); //

答案 1 :(得分:1)

我想建议一个方便的第三方http://momentjs.com/docs/#/parsing/string-format,并且可以像这样完成该库:

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

答案 2 :(得分:0)

您正在寻找的不是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()

```

答案 3 :(得分:0)

如果预期输入字符串格式相同'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