如何在Javascript中将日期格式从dd-MMM-yyyy转换为yyyyymmdd?
我有一个带有日期选择器的输入文本框,当用户选择一个特定日期时,输入文本框中会应用日期,例如09-Dec-2014。提交时,我希望将日期以yyyymmdd格式传递给服务器,比如20141209。那么如何在javascript中转换日期格式呢如何在Javascript中将日期格式从dd-MMM-yyyy转换为yyyyymmdd?,javascript,date,date-formatting,date-conversion,Javascript,Date,Date Formatting,Date Conversion,我有一个带有日期选择器的输入文本框,当用户选择一个特定日期时,输入文本框中会应用日期,例如09-Dec-2014。提交时,我希望将日期以yyyymmdd格式传递给服务器,比如20141209。那么如何在javascript中转换日期格式呢 var date = new Date(Date.parse('09-Dec-2014')); 上面的代码给出了“无效日期” 在网上搜索解决方案,但找不到我的问题的答案 有人能帮我吗 谢谢 var date = '09-Dec-2014'.split("-
var date = new Date(Date.parse('09-Dec-2014'));
上面的代码给出了“无效日期”
在网上搜索解决方案,但找不到我的问题的答案
有人能帮我吗
谢谢
var date = '09-Dec-2014'.split("-");
var newDate=date[2]+date[1]+date[0];
真正快捷的方法可能是拆分并生成自己的数据。问题在于将所需日期传递给date()对象的格式 出于某些原因,浏览器不支持日期格式“yyyy-mm-dd”,因此失败 所有浏览器都支持以下格式,建议使用其中一种格式以避免错误:
var d = new Date(2011, 01, 07); // yyyy, mm-1, dd
var d = new Date(2011, 01, 07, 11, 05, 00); // yyyy, mm-1, dd, hh, mm, ss
var d = new Date("02/07/2011"); // "mm/dd/yyyy"
var d = new Date("02/07/2011 11:05:00"); // "mm/dd/yyyy hh:mm:ss"
var d = new Date(1297076700000); // milliseconds
var d = new Date("Mon Feb 07 2011 11:05:00 GMT"); // ""Day Mon dd yyyy hh:mm:ss GMT/UTC
alert(d.getFullYear()+""+(d.getMonth()+1)+""+((d.getDate()<10)?"0"+d.getDate():d.getDate()));
var d=新日期(2011年1月7日);//yyyy,mm-1,dd
var d=新日期(2011年1月7日11月05日00分);//yyyy,mm-1,dd,hh,mm,ss
var d=新日期(“2011年7月2日”);//“年月日”
var d=新日期(“2011年7月2日11:05:00”);//“年月日hh:mm:ss”
var d=新日期(1297076700000);//毫秒
var d=新日期(“2011年2月7日星期一11:05:00 GMT”);//“日Mon-dd-yyyy hh:mm:ss GMT/UTC
提醒(d.getFullYear()+“”+(d.getMonth()+1)+++(d.getDate()感谢Danyal Sandelo和Jeeva Jsb的回答
我能够使用下面给出的代码以yyyymmdd格式获取日期
var date = '09-Dec-2014'.split("-");
var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun','Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
for(var j=0;j<months.length;j++){
if(date[1]==months[j]){
date[1]=months.indexOf(months[j])+1;
}
}
if(date[1]<10){
date[1]='0'+date[1];
}
var formattedDate = date[2]+date[1]+date[0];
var日期='2014年12月9日'。拆分(“-”;
变量月份=['1月'、'2月'、'3月'、'4月'、'5月'、'6月'、'7月'、'8月'、'9月'、'10月'、'11月'、'12月'];
对于(var j=0;j给出的答案只适用于与格式完全匹配的日期,而我需要一个解决方案,该解决方案适用于用户输入,有时不遵循该格式,因此我创建了一个函数,该函数适用于不区分大小写的月份,如一月或空格、连字符或斜杠分隔符。此外,如果没有给出天数或月份,我将t只返回日期。
函数返回2004年12月30日的2004-12-30
1893年1月为1893年。
应修剪输入字符串,因为第一个和最后一个字符必须是数字
const dateStr = str => {
const 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"};
let year = str.match(/\d{4}$/);
let month = str.match(/[A-Za-z]{3}/);
let day = str.match(/^[1-9][0-9]?/);
let mm, dd;
if(day && month && year) {
mm = months[month[0].toLocaleLowerCase()];
dd = day[0].padStart(2, '0');
console.log("Input: " + str + ". date: " + year[0] + "-" + mm + "-" + dd);
} else if(year){
console.log("Input: " + str + ". date: " + year[0]);
}
else {
return false;
}
}
我需要否决投票的原因。您能在控制台中复制并粘贴相同的代码并进行检查吗?这在Firefox中不起作用——解析与ISO 8601不兼容的日期是由实现定义的。感谢您告诉我错误和原因。请现在检查如果您想先使用日期对象,您可以通过查看另一方面,如果您只是想直接将字符串从一种形式转换为另一种形式,那么有一种更简单的方法来实现这一点。for(var j=0;j