如何将字符串转换为JavaScript日期对象?
var st = "date in some format"
var dt = new Date();
var dt_st = // st in Date format, same as dt.
如何将字符串转换为JavaScript日期对象?
var st = "date in some format"
var dt = new Date();
var dt_st = // st in Date format, same as dt.
当前回答
对于那些正在寻找小巧而智能的解决方案的人:
String.prototype.toDate = function(format)
{
var normalized = this.replace(/[^a-zA-Z0-9]/g, '-');
var normalizedFormat= format.toLowerCase().replace(/[^a-zA-Z0-9]/g, '-');
var formatItems = normalizedFormat.split('-');
var dateItems = normalized.split('-');
var monthIndex = formatItems.indexOf("mm");
var dayIndex = formatItems.indexOf("dd");
var yearIndex = formatItems.indexOf("yyyy");
var hourIndex = formatItems.indexOf("hh");
var minutesIndex = formatItems.indexOf("ii");
var secondsIndex = formatItems.indexOf("ss");
var today = new Date();
var year = yearIndex>-1 ? dateItems[yearIndex] : today.getFullYear();
var month = monthIndex>-1 ? dateItems[monthIndex]-1 : today.getMonth()-1;
var day = dayIndex>-1 ? dateItems[dayIndex] : today.getDate();
var hour = hourIndex>-1 ? dateItems[hourIndex] : today.getHours();
var minute = minutesIndex>-1 ? dateItems[minutesIndex] : today.getMinutes();
var second = secondsIndex>-1 ? dateItems[secondsIndex] : today.getSeconds();
return new Date(year,month,day,hour,minute,second);
};
例子:
"22/03/2016 14:03:01".toDate("dd/mm/yyyy hh:ii:ss");
"2016-03-29 18:30:00".toDate("yyyy-mm-dd hh:ii:ss");
其他回答
我写了一个可重用的函数,当我从服务器获取日期字符串时使用。 您可以传递所需的分隔符(/ -等),用于分隔日、月和年,以便使用split()方法。 您可以在这个工作示例中看到并测试它。
<!DOCTYPE html>
<html>
<head>
<style>
</style>
</head>
<body>
<div>
<span>day:
</span>
<span id='day'>
</span>
</div>
<div>
<span>month:
</span>
<span id='month'>
</span>
</div>
<div>
<span>year:
</span>
<span id='year'>
</span>
</div>
<br/>
<input type="button" id="" value="convert" onClick="convert('/','28/10/1980')"/>
<span>28/10/1980
</span>
<script>
function convert(delimiter,dateString)
{
var splitted = dateString.split('/');
// create a new date from the splitted string
var myDate = new Date(splitted[2],splitted[1],splitted[0]);
// now you can access the Date and use its methods
document.getElementById('day').innerHTML = myDate.getDate();
document.getElementById('month').innerHTML = myDate.getMonth();
document.getElementById('year').innerHTML = myDate.getFullYear();
}
</script>
</body>
</html>
我使用这个函数将任何Date对象转换为UTC Date对象。
function dateToUTC(date) {
return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());
}
dateToUTC(new Date());
你还可以: mydate.toLocaleDateString ();
还有另一种方式:
String.prototype.toDate = function(format) {
format = format || "dmy";
var separator = this.match(/[^0-9]/)[0];
var components = this.split(separator);
var day, month, year;
for (var key in format) {
var fmt_value = format[key];
var value = components[key];
switch (fmt_value) {
case "d":
day = parseInt(value);
break;
case "m":
month = parseInt(value)-1;
break;
case "y":
year = parseInt(value);
}
}
return new Date(year, month, day);
};
a = "3/2/2017";
console.log(a.toDate("dmy"));
// Date 2017-02-03T00:00:00.000Z
将其作为参数传递给Date():
var st = "date in some format"
var dt = new Date(st);
您可以使用,例如:dt.getMonth()来访问日期、月、年。