当我正在使用nodeschool.io的一个节点项目时,我需要做的一件事情就是构造一个日期格式,并确保它按照显示的方式正确格式化。格式如下: “ YYYY-MM-DD hh:mm” 我使用date对象获取所需的日期信息,然后将它们全部收集到一个数组中以创建一个简单的for循环,该循环将其转换为字符串以简化某些格式化操作。我一直在尝试的一种特定格式设置做法是在月份和日期后加上“ 0”,因为格式在月份和日期中需要两位数字,但是,这两个数字只有一位,因为那是当前日期。由于某些奇怪的原因,将不会附加0。
var date = new Date();
// Date Format: "YYYY-MM-DD hh:mm"
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDay();
var hour = date.getHours();
var minute = date.getMinutes();
var dates = [year, month, day, hour, minute];
// Conversion and Formatting
for (var i = 0; i < dates.length; i++) {
dates[i] = dates[i].toString();
if (dates[i].length < 2) {
dates[i] = "0" + dates[i];
}
}
var format = year + "-" + month + "-" + day + " " + hour + ":" +
minute;
console.log(format);
答案 0 :(得分:1)
也许您可以尝试这样的事情
function td(n) {
return ('' + n).length == 2 ? n : '0' + n;
}
let date = new Date();
let format = date.getFullYear() + '-' +
td(date.getMonth() + 1) + '-' +
td(date.getDate()) + ' ' +
td(date.getHours()) + ':' +
td(date.getMinutes());
console.log(format);
答案 1 :(得分:1)
您需要将对format
的分配包括在for
循环内,并将适当的分隔符附加到每个元素。这是修改后的代码:
var date = new Date();
// Date Format: "YYYY-MM-DD hh:mm"
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDay();
var hour = date.getHours();
var minute = date.getMinutes();
var dates = [year, month, day, hour, minute];
let format = "";
const separators = ["", "-", "-", " ", ":"];
// Conversion and Formatting
for (var i = 0; i < dates.length; i++) {
dates[i] = dates[i].toString();
if (dates[i].length < 2) {
dates[i] = "0" + dates[i];
}
format += separators[i] + dates[i];
}
console.log(format);
答案 2 :(得分:0)
您的数组包含year
,month
等变量的副本。更改数组中的值不会影响原始变量。
您可以做的是使用 second 数组来保存位于组件值之间的分隔符,并在迭代过程中构建结果字符串:
var seps = ["-", "-", " ", ":"];
format = ""; // initialize the result formatted date
for (var i = 0; i < dates.length; ++i) {
if (i > 0)
format += seps[i - 1]; // add separator
var d = dates[i].toString();
if (d.length < 2)
d = "0" + d;
format += d;
}