Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Javascript中将日期格式从dd-MMM-yyyy转换为yyyyymmdd?_Javascript_Date_Date Formatting_Date Conversion - Fatal编程技术网

如何在Javascript中将日期格式从dd-MMM-yyyy转换为yyyyymmdd?

如何在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("-

我有一个带有日期选择器的输入文本框,当用户选择一个特定日期时,输入文本框中会应用日期,例如09-Dec-2014。提交时,我希望将日期以yyyymmdd格式传递给服务器,比如20141209。那么如何在javascript中转换日期格式呢

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