我想将日期为“ Aug 19th 2018”的字符串转换为“ mm-dd-yyyy”格式(不使用moment.js) 我用过
d = new Date("Aug 19th 2018")
由于无法解析“ 19th”,因此导致NaN。如何实现呢?
答案 0 :(得分:2)
创建自定义函数并将日期转换为所需格式
let dt = "Aug 19th 2018";
function convertDate(dt) {
let newFormat = "";
// a mapping of month name and numerical value
let monthMapping = {
jan:'01',
feb: '02',
mar: '03',
april: '04',
may: '05',
june: '06',
july: '07',
aug: '08',
sept: '09',
oct: '10',
nov: '11',
dec: '12'
}
// split the input string into three pieces
let splitDt = dt.split(" ");
// from the first piece get the numerical month value from the above obhect
let getMonth = monthMapping[splitDt[0].toLowerCase()];
let date = parseInt(splitDt[1], 10)
let year = splitDt[2]
return `${getMonth}-${date}-${year}`
}
console.log(convertDate(dt))
答案 1 :(得分:2)
您可以split()
字符串,使用对象获取月份索引,并使用parseInt()
从日期中提取数字。
使用new Date(year, monthIndex , day)
获取日期对象。
let formatDate = s => {
let months = {jan:'0',feb:'1',mar:'2',apr:'3', may:'4',jun:'5',jul:'6',aug:'7',sep:'8',oct:'9',nov:'10',dec:'11'};
let [m, d, y] = s.split(' ');
return new Date(y, months[m.toLowerCase()], parseInt(d));
};
var date1 = formatDate("Aug 19th 2018");
var date2 = formatDate("Mar 19th 2000");
文档:new Date()
答案 2 :(得分:2)
您可以使用正则表达式替换日期值中的所有字母,然后将字符串再次传递给Date()构造函数
var dateString = "AUG 19th 2018";
var dateFrag = dateString.split(' ');
dateFrag[1] = dateFrag[1].replace(/[a-zA-Z]/g,'');
var d = new Date(dateFrag);
console.log(d);
答案 3 :(得分:1)
更新,您可以先替换该“ th”,“ rd”
var mydate= new Date(ReturnProperDate("Aug 19th 2018"));
//you can create manual function to handle format now
console.log( (1+mydate.getMonth()) +"-"+ mydate.getDate()+"-" + mydate.getFullYear());
function ReturnProperDate(date){
date=date.replace('th','');
date=date.replace('rd','');
date=date.replace('xx',''); //if any other
return date;
}
使用时刻js:https://momentjs.com/
那么您就可以轻松地将自己的约会对象变成伴侣
moment(yourDate).format('DD-MMM-YYYY'); // put format as you want
moment().format('MMMM Do YYYY, h:mm:ss a'); // June 28th 2018, 9:58:10 am
答案 4 :(得分:1)
@Saurin Vala的解决方案存在一个问题,正如js doc所说的那样,当解析字符串时,必须给出一种格式,否则它将构造js Date(),这在某些浏览器上可能无法运行take a look at the issue on moment js doc 。 正确的方式就是这样
var a = moment("Aug 19th 2018", 'MMM Do YYYY')
现在您可以通过多种方式输出格式
答案 5 :(得分:1)
尝试使用String.replace():
(function() {
'use strict';
angular.module('users').controller('TestownerControllerController', TestownerControllerController);
TestownerControllerController.$inject = ['$scope'];
function TestownerControllerController($scope) {
var vm = this;
// Testowner controller controller logic
// ...
init();
function init() {
}
}
})();