我有一个字符串变量"PublishDate"
然后当我使用"PublishDate.value"
检查值时,它返回一个像
"October 04, 2016 9:28 AM"
我需要将其转换为格式为"10/04/2016"
我不确定这是如何在javascript中完成的:
var d = new Date("October 04, 2016 9:28 AM");
var date = d.getDate();
var month = d.getMonth();
var year = d.getFullYear();
var hours = d.getHours();
var min = d.getMinutes(); //10/04/2016
console.log(month+1+'/'+date+'/'+year);
答案 0 :(得分:2)
使用几个月的数组来获取数值,然后只需解析它就可以了
var months = [
"January",
"February",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December"
];
function pad(n) { return n<10?'0'+n:n }
var PublishDate = {
value : "October 04, 2016 9:28 AM"
}
var parts = PublishDate.value.split(/[\s\,\:]+/);
var year = +parts[2];
var month = months.indexOf(parts[0]);
var day = +parts[1];
var date = new Date(year, month, day); // date object
var str = pad(month+1) + '/' + pad(day) + '/' + year; // the string "10/04/2016"
console.log(date);
console.log(str);
.as-console-wrapper {top : 0}
答案 1 :(得分:1)
// Example PublishDate result
var PublishDate = {
value: 'October 04, 2016 9:28 AM'
};
// convert "date string" into "date object"
var date = new Date(PublishDate.value);
// build required "date string"
var dateShort = (date.getMonth() +1) + '/'
+ date.getDate() + '/'
+ date.getFullYear();
// console log to show result
console.log(dateShort);
答案 2 :(得分:1)
首先,使用Date constructor:
将该String日期转换为Date对象var d = new Date(PublishDate.value);
编辑:始终考虑浏览器可能不支持您的格式的情况。对于Firefox,MDN声明它将支持certain date formats:
字符串应采用Date.parse()方法识别的格式 (符合IETF的RFC 2822时间戳以及ISO8601的版本)。
IE's MSDN Javascript reference也说:
它首先尝试使用ISO Date Format解析日期字符串。如果 日期字符串不是ISO格式,JavaScript试图解析 使用其他Other Date Formats日期。
另外,考虑到MDN本身不鼓励使用构造函数或Date.parse()
解析字符串日期,即使它适用于您的特定情况:
注意:使用Date构造函数解析日期字符串(和 Date.parse,它们是等效的)因为强烈气馁 浏览器差异和不一致。
如果您需要支持其他种类的日期格式或各种浏览器,您还可以考虑Momtent.js javascript库或使用RegEx进行自己的解析,例如@ RobG&#39; s和@ adeneo&# 39;答案。
然后,你需要提取你想要的部分(月,日,年)并将它们连接成一个字符串,斜杠作为分隔符,比如在@ user3254198的答案或@Steeve Pitis&#39; s回答:
d.getDate() + '/'
+ (d.getMonth() + 1) + '/'
+ d.getFullYear()
请记住,PublishDate.value.getMonth()
方法会返回月份的从零开始的月份数字表示,因此如果您想要1-12值,请为其添加+1
。
随意进一步询问!祝你好运。
答案 3 :(得分:1)
使用Date构造函数解析类似“2016年10月4日上午9:28”的字符串完全取决于实现,可能导致日期或日期无效,因此要么使用解析器(有许多好的可用)或者自己编写一个小函数来解析字符串。
但是如果你只想重新格式化它,那么根本不需要解析为Date,只需重新格式化字符串即可。 E.g。
/* Reformat a string like October 04, 2016 9:28 AM to m/d/y format
** @param {string} s - string in format MMMM DD, YYYY h:mm ap
** @returns {string} reformatted date in MM/DD/YYYY format
*/
function reformatDate(s) {
var 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'};
var b = s.match(/\w+/g) || [];
return months[b[0].toLowerCase().substr(0,3)] + '/' + b[1] + '/' + b[2];
}
console.log(reformatDate('October 04, 2016 9:28 AM'));
答案 4 :(得分:0)
在SO上有很多这样的问题...尝试下次搜索一下。
var date = new Date(PublishDate.value);
console.log((date.getDate() + '/' + (date.getMonth() + 1) + '/' + date.getFullYear());