关于JavaScript new Date()和Date.parse()) var-exampleDate='23-12-2010 23:12:00';
我想将上面的字符串转换为关于JavaScript new Date()和Date.parse()) var-exampleDate='23-12-2010 23:12:00';,javascript,date,Javascript,Date,我想将上面的字符串转换为日期,并尝试了一些方法: var-date=新日期(例如日期)//返回无效日期 var date1=Date.parse(exampleDate)//返回楠 这段代码在IE和Opera中运行良好,但是日期在Firefox中返回无效的日期,而日期1在Firefox中返回NAN。我应该怎么做?JavaScript应该至少支持从以下日期字符串进行转换: * yyyy/MM/dd * MM/dd/yyyy * MMMM dd, yyyy * MMM dd, yyyy 尝试:
日期
,并尝试了一些方法:
var-date=新日期(例如日期)//返回无效日期
var date1=Date.parse(exampleDate)//返回楠
这段代码在
IE
和Opera
中运行良好,但是日期
在Firefox中返回无效的日期
,而日期1
在Firefox中返回NAN
。我应该怎么做?JavaScript应该至少支持从以下日期字符串进行转换:
* yyyy/MM/dd
* MM/dd/yyyy
* MMMM dd, yyyy
* MMM dd, yyyy
尝试:
var exampleDate='12/23/2010 23:12:00';
var date = new Date(exampleDate);
示例中的字符串不是浏览器可以识别的任何标准格式。ECMAScript规范要求浏览器只能解析一种标准格式: 格式如下:
YYYY-MM-DDTHH:MM:ss.sssZ
此格式包括仅限日期的表格:
YYYY
YYYY-MM
YYYY-MM-DD
它还包括附加了可选时区偏移的仅时间表单:
THH:mm
THH:mm:ss
THH:mm:ss.sss
还包括“日期时间”,可以是上述任何组合
如果字符串不符合该格式,函数可能会返回到任何
特定于实现的试探法或特定于实现的日期格式。无法识别的字符串或日期
格式字符串中包含非法元素值将导致Date.parse返回NaN
因此,在您的示例中,使用
2010-12-23T23:12:00
是唯一保证工作的字符串。实际上,大多数浏览器也允许日期格式为DD-Month-YYYY
或Month-DD,YYYY
,因此像2010年12月23日
和2010年12月23日
这样的字符串也可以工作。上述格式仅在IE和Chrome中受支持
因此,尝试其他格式。以下是一些格式和支持的浏览器
<script type="text/javascript">
//var dateString = "03/20/2008"; // mm/dd/yyyy [IE, FF]
var dateString = "2008/03/20"; // yyyy/mm/dd [IE, FF]
// var dateString = "03-20-2008"; // mm-dd-yyyy [IE, Chrome]
// var dateString = "March 20, 2008"; // mmmm dd, yyyy [IE, FF]
// var dateString = "Mar 20, 2008"; // mmm dd, yyyy [IE, FF]
// Initalize the Date object by passing the date string variable
var myDate = new Date(dateString);
alert(myDate);
</script>
//var dateString=“03/20/2008”;//年月日[即,日后]
var dateString=“2008/03/20”;//yyyy/mm/dd[即,日后]
//var dateString=“03-20-2008”;//年月日[即,Chrome]
//var dateString=“2008年3月20日”//年月日[即,日后]
//var dateString=“2008年3月20日”//年月日[即,日后]
//通过传递日期字符串变量初始化日期对象
var myDate=新日期(日期字符串);
警报(myDate);
您可以使用正则表达式手动解析它,然后使用日期元素调用日期构造函数,如下所示:
var parseDate = function(s) {
var re = /^(\d\d)-(\d\d)-(\d{4}) (\d\d):(\d\d):(\d\d)$/;
var m = re.exec(s);
return m ? new Date(m[3], m[2]-1, m[1], m[4], m[5], m[6]) : null;
};
var dateStr = '23-12-2010 23:12:00';
parseDate(dateStr).toString(); //=> Thu Dec 23 2010 23:12:00 GMT-0800
使用此代码并执行以下操作:
var exampleDate='23-12-2010 23:12:00';
var myDate = Date.parseExact(exampleDate, 'dd-MM-yyyy hh:mm:ss');
myDate
应该是一个正确构造的Date
对象。只需使用以下格式:
var exampleDate='2010-12-23 23:12:00';
@卡萨布兰卡有一个很好的答案,但是已经10年多了,这在谷歌仍然有很大的影响力,所以我想我应该更新一个新的答案 TL;DR
//使用ISO或Unix时间字符串生成'Month DD,YYYY`
const newDate=新日期('23-12-2010')
const simpleDate=`${newDate.tolocalString('en-us',{month:'long'})}${newDate.getDate()},${newDate.getFullYear()}`
//收益率:2010年12月23日(如果你想要日期后缀,读到最后)
背景:日期有很多格式,但您主要会收到:
- ISO 8601格式的日期(
),其中YYYY-MM-DDTHH:MM:ss.sssZ
是UTC时区偏移量。您还可能会得到其中的一个子集(即,Z
)YYYY-MM-DD
- Unix时间戳格式日期(
),其中的数字实际上是自1970年1月1日Unix时间开始以来的毫秒总数1539734400
newdate
实例化并返回日期对象,也可以使用Date.parse()
方法返回Unix时间戳
const dateObj=new Date('23-12-2010:23:12:00')//返回日期对象
const dateDateOnly=new Date('23-12-2010')//返回日期对象
const dateTimeOnly=new Date('23:12:00')//返回日期对象
const dateString=Date.parse('23-12-2010:23:12:00')//返回Unix时间戳字符串
您还可以将日期分为7个参数:年、月(从0开始)、天、小时、分钟、秒和毫秒以及时区偏移-注意,在我的职业生涯中,我只使用过一次多参数方法。由于我在德克萨斯州,当我运行以下命令时,我得到UTC-5(中央时间):
const dateByParam = new Date(2021, 2, 26, 13, 50, 13, 30) // Fri Mar 26 2021 13:50:13 GMT-0500 (Central Daylight Time)
New-ish StufftoLocaleString
:通常,从Date
对象返回的数据仍然非常密集,就像我们上一个示例(Fri Mar 26 2021 13:50:13 GMT-0500(中央夏时制)
),因此添加了其他方法来帮助开发人员
通常,我想要一个日期,比如2021年3月21日,这一天和这一年很容易得到:
//假设myDate是JS日期对象。。。
myDate.getDate()//日历上的日期,即22
myDate.getDay()//一周中的哪一天,其中0表示星期日,1表示星期一,以此类推
myDate.getFullYear()//4位年份,即2021年
但是我总是需要构建一个函数来将getDay
转换为一月、二月、三月
,不再是了。tolocalString()
给了你一些新的超能力。你可以给它传递两个参数,一个表示区域的字符串(即,en-us
)和一个包含你想要返回的对象(即,{month:'long'}
)。这有助于将响应国际化(如果需要)
//再次假设myDate是JS日期对象。。。
myDate.tolocalesting('en-us',{month:'long'})//三月
日期后缀我仍然没有看到内置的方法来获取日期后缀,比如th,st
,所以我构建了
/**
* setDateSuffix()
*
* Desc: Takes two digit date, adds 'st', 'nd', 'rd', etc
*
* @param { integer } num - a number date
*/
export const setDateSuffix = (num) => {
const j = num % 10,
k = num % 100
if (j === 1 && k !== 11) {
return num + "st";
}
if (j === 2 && k !== 12) {
return num + "nd";
}
if (j === 3 && k !== 13) {
return num + "rd";
}
return num + "th";
}