【问题标题】:array of dates .toDateString日期数组 .toDateString
【发布时间】:2018-09-29 09:54:08
【问题描述】:

我有一个 for 循环,我想显示这个循环的每个结果的日期。我现在可以这样做,但它显示如下:

2018-04-19 12:00:00

我希望它显示如下:

19-04-2018

我能够定位子字符串并以这种方式获得我想要的布局:

    forecastDayEl= sessionStorage.getItem("forecastDay");

    var objDay = JSON.parse(forecastDayEl);

objDay.forEach(function(entry) {

            var time = entry.substring(11, 13);
            var days = entry.substring(8, 10);
            var month = entry.substring(5, 7);
            var year = entry.substring(0, 4);

});

但我不确定如何将其添加到现有的 for 循环中:

var forecastLength;
var forecastText;
var g;

    forecastLength = objTemp.length;
    forecastText = "<div class='forecastList'>";
    for (g = 0; g < forecastLength; g++) {

        forecastText += "<ul>" + "<li class='forecastDay'>" + objDay[g] + "</li>" + "<li class='forecastTemp'>" + objTemp[g] + "</li>" + "<li class='forecastIcon'>" + "<img id='icon'" + "src='/weather/icons/" + objIcon[g] + ".png'" + "alt='Weather icon'>" + "</li>" + "</ul>";
    }
    forecastText += "</div>";

    //outputs result as list
    document.getElementById("forecastList").innerHTML = forecastText;

forecastDayEl 正在输出:

["2018-04-19 12:00:00","2018-04-20 12:00:00","2018-04-21 12:00:00","2018-04-22 12:00:00","2018-04-23 12:00:00"]

objDay 正在输出:

(5) ["2018-04-19 12:00:00", "2018-04-20 12:00:00", "2018-04-21 12:00:00", "2018-04-22 12:00:00", "2018-04-23 12:00:00"]
0
:
"2018-04-19 12:00:00"
1
:
"2018-04-20 12:00:00"
2
:
"2018-04-21 12:00:00"
3
:
"2018-04-22 12:00:00"
4
:
"2018-04-23 12:00:00"

var days 正在输出:

19
20
21
22
23

如果我可以这样做,最好避免这种麻烦:

objDay[g].toDateString();

但这不起作用:

objDay[g].toDateString 不是函数

【问题讨论】:

  • 我认为这与 jQuery 无关。
  • 已经有很多关于重新格式化日期字符串的问题。最简单的方法是拆分为值,然后根据需要进行格式化。不要解析为日期然后从那里格式化。

标签: javascript jquery arrays date


【解决方案1】:

将 2018-04-19 12:00:00 转换为 19-04-2018 的最简单方法是获取值并重新排序。有很多方法可以做到这一点,例如

function reformatDate0(s) {
  return s.split(' ')[0].split('-').reverse().join('-')
}

function reformatDate1(s) {
  return s.split(/\D/).splice(0,3).reverse().join('-');
}

function reformatDate2(s) {
  var b = s.split(/\D/);
  return b[2]+'-'+b[1]+'-'+b[0];
}

var s = '2018-04-19 12:00:00';
console.log(reformatDate0(s));
console.log(reformatDate1(s));
console.log(reformatDate2(s));

等等……

【讨论】:

    【解决方案2】:

    使用.mapobjDay 转换为所需格式的字符串数组,然后改用转换后的数组:

    const input = JSON.parse('["2018-04-19 12:00:00","2018-04-20 12:00:00","2018-04-21 12:00:00","2018-04-22 12:00:00","2018-04-23 12:00:00"]');
    const output = input.map((dateStr) => {
      const [year, month, day] = dateStr.match(/\d+/g);
      return [day, month, year].join('-');
    });
    console.log(output);

    【讨论】:

      猜你喜欢
      • 2013-07-31
      • 2019-02-19
      • 1970-01-01
      • 1970-01-01
      • 2017-02-15
      • 2017-10-11
      • 1970-01-01
      • 1970-01-01
      • 2017-06-28
      相关资源
      最近更新 更多