【发布时间】:2018-05-14 12:42:20
【问题描述】:
我想用这种格式“3/25/2018 11:51:46 PM”转换字符串日期 转换为 24 小时区域设置格式,例如“10/05/2018 at 08:51:46”(法语格式)
当我插入这种日期“2018 年 3 月 25 日晚上 11:51:46”时,我会得到“2018 年 10 月 5 日 08:51:46”
这是我当前的代码:
String.prototype.toDate = function(format) {
var normalized = this.replace(/[^a-zA-Z0-9]/g, '-');
var normalizedFormat = format.toLowerCase().replace(/[^a-zA-Z0-9]/g, '-');
var formatItems = `enter code here`
normalizedFormat.split('-');
var dateItems = normalized.split('-');
var monthIndex = formatItems.indexOf("mm");
var dayIndex = formatItems.indexOf("dd");
var yearIndex = formatItems.indexOf("yyyy");
var hourIndex = formatItems.indexOf("hh");
var minutesIndex = formatItems.indexOf("ii");
var secondsIndex = formatItems.indexOf("ss");
var today = new Date();
var year = yearIndex > -1 ? dateItems[yearIndex] : today.getFullYear();
var month = monthIndex > -1 ? dateItems[monthIndex] - 1 : today.getMonth() - 1;
var day = dayIndex > -1 ? dateItems[dayIndex] : today.getDate();
var hour = hourIndex > -1 ? dateItems[hourIndex] : today.getHours();
var minute = minutesIndex > -1 ? dateItems[minutesIndex] : today.getMinutes();
var second = secondsIndex > -1 ? dateItems[secondsIndex] : today.getSeconds();
if ((this.split(" ")[2] == "PM") && hour < 12) {
hour = hour + 12;
} else if ((this.split(" ")[2] == "AM") && hour == 12) {
hour = hour - 12;
}
console.log(year + " " + month + " " + day + " " + hour + " " + minute + " " + second);
return new Date(year, month, day, hour, minute, second);
};
logd = "3/25/2018 11:51:46 PM".toDate("mm/dd/yyyy hh:ii:ss");
console.log(logd.toLocaleString());
【问题讨论】:
-
只是想知道,有什么理由不使用momentjs?在这些情况下,它让生活更轻松。
-
这是什么问题?通常24小时转换成12小时?你想做什么?
-
使用日期时没有转换。显示您的数据始终是一个问题
-
@MemetOlsen 因为您可以在 3 行代码中完成此操作,而不是包含整个库来完成它?
-
@Pete 好吧,这是真的,但我希望他不要处理持续时间、时区和用户个性化格式,因为从头开始编写所有代码真的很疯狂
标签: javascript date format