数组中的字符串未添加其他字符

时间:2019-01-15 00:46:24

标签: javascript

当我正在使用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);

3 个答案:

答案 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)

您的数组包含yearmonth等变量的副本。更改数组中的值不会影响原始变量。

您可以做的是使用 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;
}