【问题标题】:How to print only Day instead of full date?如何仅打印日期而不是完整日期?
【发布时间】:2019-01-02 05:39:12
【问题描述】:

我的 JSON 数组中有完整的日期,但根据我的需要,我只想要日期而不是月份和年份,就像完整日期是 2018-12-01 我只想拥有 01

因为这是对我的要求,我不知道如何连接它

const raw = [
  [
    "JAYANAGAR",
    "2018-09-01",
    "476426"
  ],
  [
    "MALLESHWARAM",
    "2018-09-01",
    "92141"
  ],
  [
    "KOLAR",
    "2018-09-01",
    "115313"
  ],
  [
    "JAYANAGAR",
    "2018-09-02",
    "511153"
  ],
  [
    "MALLESHWARAM",
    "2018-09-02",
    "115704"
  ],
  [
    "KOLAR",
    "2018-09-02",
    "83597"
  ],
  [
    "JAYANAGAR",
    "2018-09-03",
    "167421"
  ],
  [
    "KOLAR",
    "2018-09-03",
    "53775"
  ]
]
let types = new Set();
const rawObj = raw.reduce((memo, [type, date, value]) => {
  date = date.split('-').reverse().join('-');
  memo[date] = memo[date] || {};
  memo[date][type] = parseInt(value);
  types.add(type);
  return memo;
}, {});
types = [...types];

const data = Object.entries(rawObj).reduce((memo, [date, value]) => {
  memo.push([date, ...types.map(type => value[type] || 0)]);
  return memo;
}, [
  ['Billdate', ...types.map(type => `${type[0]}${type.substr(1).toLowerCase()}`)]
]);

console.log(data)

在我的代码中,我正在格式化我的 JSON 数据,因为我现在只想要日期而不是月份和年份。

这里的任何人请指导我或建议我如何实现这一目标

【问题讨论】:

标签: javascript json


【解决方案1】:
var date = new Date('2019-01-02');
alert(date.getDate())

.getDate() 是从日期返回日期的函数。

如果日期是字符串 做-

console.log(date.slice(-2));

【讨论】:

    【解决方案2】:

    您可以先将游览日期字符串转换为日期对象,然后使用getDate()获取日期。这将保证支持各种日期时间格式。

    var date = new Date('2018-09-01')
    console.log(date.getDate());

    根据您的数组raw 数据,假设您的日期将始终位于 1 索引处,您可以试试这个

    const raw = [
      [
        "JAYANAGAR",
        "2018-09-01",
        "476426"
      ],
      [
        "MALLESHWARAM",
        "2018-09-01",
        "92141"
      ],
      [
        "KOLAR",
        "2018-09-01",
        "115313"
      ],
      [
        "JAYANAGAR",
        "2018-09-02",
        "511153"
      ],
      [
        "MALLESHWARAM",
        "2018-09-02",
        "115704"
      ],
      [
        "KOLAR",
        "2018-09-02",
        "83597"
      ],
      [
        "JAYANAGAR",
        "2018-09-03",
        "167421"
      ],
      [
        "KOLAR",
        "2018-09-03",
        "53775"
      ]
    ]
    
    var dateList = raw.map(data => {
      return new Date(data[1]).getDate();
    })
    
    console.log(dateList)

    【讨论】:

    【解决方案3】:

    您可以将日期字符串更改为 Date 对象,并使用 getDate 函数获取日期部分

    var d = new Date('2018-09-03');
    console.log(d.getDate())
    

    【讨论】:

    【解决方案4】:

    尝试添加这个:

    new Date("2018-09-03").getDate();
    

    【讨论】:

      【解决方案5】:

      我会告诉你在第一条语句中以所需的形式获取你的 raw 数组,如下所示。

      注意:然后你继续你的逻辑。使用new Date() 语句创建新日期没有意义。

      const raw = [
         [
           "JAYANAGAR",
           "2018-09-01",
           "476426"
         ],
         [
           "MALLESHWARAM",
           "2018-09-01",
           "92141"
         ],
         [
           "KOLAR",
           "2018-09-01",
           "115313"
         ],
         [
           "JAYANAGAR",
           "2018-09-02",
           "511153"
         ],
         [
           "MALLESHWARAM",
           "2018-09-02",
           "115704"
         ],
         [
           "KOLAR",
           "2018-09-02",
           "83597"
         ],
         [
           "JAYANAGAR",
           "2018-09-03",
           "167421"
         ],
         [
           "KOLAR",
           "2018-09-03",
           "53775"
         ]
       ].map((l) => { l[1] = l[1].split('-')[2]; return l})
      
      console.log(raw)
      /*
        [ [ 'JAYANAGAR', '01', '476426' ],
          [ 'MALLESHWARAM', '01', '92141' ],
          [ 'KOLAR', '01', '115313' ],
          [ 'JAYANAGAR', '02', '511153' ],
          [ 'MALLESHWARAM', '02', '115704' ],
          [ 'KOLAR', '02', '83597' ],
          [ 'JAYANAGAR', '03', '167421' ],
          [ 'KOLAR', '03', '53775' ] ]
      */
      

      【讨论】:

        【解决方案6】:

        试试这个代码

        var weekday = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];
        var d = new Date('08/11/2015');
        alert(weekday[d.getDay()]);
        

        【讨论】:

          【解决方案7】:

          您可以使用简单易用的moment.js:

          <script src="https://momentjs.com/downloads/moment.js"/>
          
          var day = moment(new Date('2018-09-03')).format('DD');
          

          【讨论】:

            【解决方案8】:

            您可以通过一点正则表达式来实现这一点:

            var regex = /^\d{4}-\d\d-(\d\d)$/;
            var dates = []
            
            for (let i = 0; i < raw.length; i++) {
                var match = regex.exec(raw[i][1]);
                dates.push(match[1])
            }
            

            正则表达式匹配您的日期字符串(4 位“-”2 位“-”2 位)并在将日期推送到数组之前捕获日期。

            https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions

            【讨论】:

              猜你喜欢
              • 2011-04-10
              • 2018-06-18
              • 1970-01-01
              • 1970-01-01
              • 2020-07-31
              • 2021-07-14
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多