Javascript – js, Datumskonvertierung fehlgeschlagen
阿神
阿神 2017-05-18 10:47:30
0
7
711

Ich benutze

var time = new Date("17 五月 2017 14:01:59")

Konvertierungsfehler, aber Verwendung von

var time = new Date("2017-05-17 14:01:59")

Konvertierung erfolgreich.
Wenn ich mit dem folgenden Datumsformat konvertieren muss:

17 五月 2017 14:01:59  

Wie gehe ich damit um?

阿神
阿神

闭关修行中......

Antworte allen(7)
大家讲道理
const dateStr = '17 五月 2017 14:01:59'

function convert2ISO8061 (dateStr) {
  const units = dateStr.split(' ')
  return units[2] + '-' + convertMonth(units[1]) + '-' + units[0] + 'T' + units[3] + 'Z'
}

function convertMonth (mStr) {
  const months = ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月']
  const month = months.indexOf(mStr) + 1
  if (month < 10) {
    return '0' + month
  }
  return parseInt(month)
}

console.log(Date.parse(convert2ISO8061(dateStr)))
阿神

先将 "17 五月 2017 14:01:59" 使用 split(' ') 转换为数组 arr。

再写一个函数将汉字 五月 转为数字形式,然后使用数组 arr 进行迭代重新组合成你所需要的日期格式即可。

迷茫

var time = new Date("17 May 2017 14:01:59"); 是 ok 的哦;
so 题主你只需要将中文月份替换成英文缩写就 ok 了。

習慣沉默

需要自己将五月这个重新一次,然后进行拼接

Ty80

刚才理解错意思了,不过根据上面的思路这么写也可以

function converDate(date){
  var arr=date.split(' ');
  var ENdate=['Jan', 'Feb', 'Mar', 'April', 'May', 'Jan', 'July', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
  var CNdate=['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'];
  var idx=CNdate.indexOf(arr[1]);
  arr[1]=ENdate[idx];
  return new Date(arr.join(' '));
}
converDate('17 五月 2017 14:01:59');
仅有的幸福
DateUtils = {
    format : function(date, format) {
        if (date == null || date.length == 0)
            return '';

        if (typeof(date) == 'number')
            date = new Date(date);
        
        var dayArray = new Array("星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六");
        
        var o = {
            "M+" : date.getMonth() + 1,
            "d+" : date.getDate(),
            "H+" : date.getHours(),
            "m+" : date.getMinutes(),
            "s+" : date.getSeconds(),
            "q+" : Math.floor((date.getMonth() + 3) / 3),
            "S" : date.getMilliseconds(),
            "day" : dayArray[date.getDay()]
        };

        if (/(y+)/.test(format))
            format = format.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));

        for (var k in o) {
            if (new RegExp("(" + k + ")").test(format)) {
                if (k == "day")
                    format = format.replace(RegExp.$1, o[k]);
                else
                    format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
            }
        }

        return format;
    },
    
    parse : function(string, format) {
        if (format == null || format.length == 0) {
            var time = Date.parse(string);
            return new Date(time);
        }
    
        if (!DateUtils.isValidate(string, format))
            return new Date();
    
        var regexp = DateUtils.regexp(format);
        var index = DateUtils.validateIndex(format);
    
        var dateArray = regexp.exec(string);
    
        var now = new Date();
        var year = (index[0] >= 0) ? dateArray[index[0] + 1] : now.getFullYear();
        var month = (index[1] >= 0) ? (dateArray[index[1] + 1] - 1) : now.getMonth();
        var day = (index[2] >= 0) ? dateArray[index[2] + 1] : now.getDate();
        var hour = (index[3] >= 0) ? dateArray[index[3] + 1] : "";
        var minute = (index[4] >= 0) ? dateArray[index[4] + 1] : "";
        var second = (index[5] >= 0) ? dateArray[index[5] + 1] : "";
    
        var date = (hour == "") ? new Date(year, month, day) : new Date(year, month, day, hour, minute, second);
        if (date.getDate() == day)
            return date;
    
        return new Date();
    },
    
    display : function(dateString) {
        if (dateString == null || dateString.length == 0)
            return '';
        
        var format = 'yyyyMMdd';
        if (dateString.length == format.length) {
            var date = DateUtils.parse(dateString, format);
            return DateUtils.format(date, 'yyyy-MM-dd');
        }
        
        format = 'yyyyMMddHHmmss';
        if (dateString.length == format.length) {
            var date = DateUtils.parse(dateString, format);
            return DateUtils.format(date, 'yyyy-MM-dd HH:mm:ss');
        }
        
        return dateString;
    },
    
    trimDisplay : function(dateString) {
        if (dateString == null || dateString.length == 0)
            return '';
        
        return dateString.replace(/[^0-9]+/g, '');
    },

    addDays : function(date, amount) {
        var time = 1000 * 60 * 60 * 24 * amount;
        return new Date(date.getTime() + time);
    },
    
    secondToTimeString : function(second) {
        if (second == null || second.length == 0)
            return '';
        
        if (second < 60)
            return '00:00:' + DateUtils.toFormatString(second, 2, '0');
        else if (second < 3600) {
            var minute = parseInt(second / 60);
            return '00:' + DateUtils.toFormatString(minute, 2, '0') + ':' + DateUtils.toFormatString(second % 60, 2, '0');
        } else if (second < 86400) {
            var hour = parseInt(second / 3600);
            var minute = parseInt(second % 3600 / 60);
            return DateUtils.toFormatString(hour, 2, '0') + ':' + DateUtils.toFormatString(minute, 2, '0') + ':' + DateUtils.toFormatString(second % 60, 2, '0');
        } else {
            var day = parseInt(second / 86400);
            var hour = parseInt(second % 86400 / 3600);
            var minute = parseInt(second % 86400 % 3600 / 60);
            return day + '.' + DateUtils.toFormatString(hour, 2, '0') + ':' + DateUtils.toFormatString(minute, 2, '0') + ':' + DateUtils.toFormatString(second % 60, 2, '0');
        }
    },

    toFormatString : function(value, length, missValue) {
        var string = value + '';
        if (string.length >= length) {
            return string;
        } else {
            while (string.length < length)
                string = missValue + string;
            
            return string;
        }
    },
    
    regexp : function(format) {
        var y4 = "([0-9]{4})";
        var y2 = "([0-9]{2})";
        var M2 = "(0[1-9]|1[0-2])";
        var M1 = "([1-9]|1[0-2])";
        var d2 = "(0[1-9]|[1-2][0-9]|30|31)";
        var d1 = "([1-9]|[1-2][0-9]|30|31)";
        var H2 = "([0-1][0-9]|20|21|22|23)";
        var H1 = "([0-9]|1[0-9]|20|21|22|23)";
        var m2 = "([0-5][0-9])";
        var m1 = "([0-9]|[1-5][0-9])";
        var s2 = "([0-5][0-9])";
        var s1 = "([0-9]|[1-5][0-9])";
    
        var reg = format;
        reg = reg.replace(/yyyy/, y4);
        reg = reg.replace(/yy/, y2);
        reg = reg.replace(/MM/, M2);
        reg = reg.replace(/M/, M1);
        reg = reg.replace(/dd/, d2);
        reg = reg.replace(/d/, d1);
        reg = reg.replace(/HH/, H2);
        reg = reg.replace(/H/, H1);
        reg = reg.replace(/mm/, m2);
        reg = reg.replace(/m/, m1);
        reg = reg.replace(/ss/, s2);
        reg = reg.replace(/s/, s1);
    
        return new RegExp("^" + reg + "$");
    },
    
    isValidate : function(string, format) {
        if (string == null || string.length == 0)
            return false;
    
        var trimString = string.replace(/(^\s*)|(\s*$)/g, "");
        if (trimString == null || trimString.length == 0)
            return false;
    
        return DateUtils.regexp(format).test(string);
    },
    
    validateIndex : function(format) {
        var array = new Array();
        var i = 0, j = 0;
    
        var yi = format.search(/yyyy/);
        if (yi < 0)
            yi = format.search(/yy/);
        if (yi >= 0) {
            array[i] = yi;
            i++;
        }
    
        var Mi = format.search(/MM/);
        if (Mi < 0)
            Mi = format.search(/M/);
        if (Mi >= 0) {
            array[i] = Mi;
            i++;
        }
    
        var di = format.search(/dd/);
        if (di < 0)
            di = format.search(/d/);
        if (di >= 0) {
            array[i] = di;
            i++;
        }
    
        var Hi = format.search(/HH/);
        if (Hi < 0)
            Hi = format.search(/H/);
        if (Hi >= 0) {
            array[i] = Hi;
            i++;
        }
    
        var mi = format.search(/mm/);
        if (mi < 0)
            mi = format.search(/m/);
        if (mi >= 0) {
            array[i] = mi;
            i++;
        }
    
        var si = format.search(/ss/);
        if (si < 0)
            si = format.search(/s/);
        if (si >= 0) {
            array[i] = si;
            i++;
        }
    
        var resultArray = new Array(yi, Mi, di, Hi, mi, si);
    
        for (i = 0; i < array.length - 1; i++) {
            for (j = 0; j < array.length - 1 - i; j++) {
                if (array[j] <= array[j + 1])
                    continue;
    
                var temp = array[j];
                array[j] = array[j + 1];
                array[j + 1] = temp;
            }
        }
    
        for (i = 0; i < array.length; i++) {
            for (j = 0; j < resultArray.length; j++) {
                if (array[i] != resultArray[j])
                    continue;
    
                resultArray[j] = i;
            }
        }
    
        return resultArray;
    }
};
var monthObject = {
    '一月' : '01',
    '二月' : '02',
    '三月' : '03',
    '四月' : '04',
    '五月' : '05',
    '六月' : '06',
    '七月' : '07',
    '八月' : '08',
    '九月' : '09',
    '十月' : '10',
    '十一月' : '11',
    '十二月' : '12'
}
var string = '17 五月 2017 14:01:59';
var keys = Object.keys(monthObject);
for (var i = 0; i < keys.length; i++) {
    var key = keys[i];
    string = string.replace(key, monthObject[key]);
}
console.log(string);

var date = DateUtils.parse(string, 'dd MM yyyy HH:mm:ss');
console.log(date);
console.log(DateUtils.format(date, 'yyyy-MM-dd HH:mm:ss'));

阿神

moment.js

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage