【问题标题】:Format an Array of Dates [duplicate]格式化日期数组[重复]
【发布时间】:2020-03-20 13:11:51
【问题描述】:

我有这个数组:

["2019-01-01", "2019-01-02", "2019-01-03"]

但我需要这样的日期:

["01-01-2019", "02-01-2019", "03-01-2019"]

这是我走了多远:

var newdate= Date.parse(olddate);
console.log(newdate.toString('dd-MMM-yyyy'));

我收到此错误:

Uncaught RangeError: toString() radix argument must be between 2 and 36

谢谢

【问题讨论】:

  • toString 不支持提供格式。如果你想像这样指定格式,你需要使用 Moment.js 或其他一些实现,这对于 vanilla JS 来说是不可能的。如果您只需要交换字符串中的位置并且知道字符串表示有效日期,则可以使用字符串操作。
  • arr=arr.map(d => d.replace(/(\d{4})-(\d{1,2})-(\d{1,2})/,"$3-$2-$1"))

标签: javascript


【解决方案1】:

一种选择是将输入数组映射到具有所需格式的新日期字符串数组,如下所示:

const input = ["2019-01-01", "2019-01-02", "2019-01-03"];

const output = input.map((str) => {
  
  /* Split date string into sub string parts */
  const [year, month, date] = str.split("-");
  
  /* Compose a new date from sub string parts of desired format */
  return `${date}-${month}-${year}`;      
});

console.log(output);

这里,来自input 的每个日期字符串都被"-" 拆分为yearmonthdate 子字符串。然后由先前提取的子字符串组成具有所需格式的新日期字符串,并从地图回调中返回。

【讨论】:

  • 虽然这回答了问题,但已经回答了很多次。所以答案不是必需的,也不是不正确的。所以请选择关闭帖子作为重复而不是回答
【解决方案2】:

您可以使用像 momentjs https://momentjs.com/guides/ 这样的库并按照以下方式进行操作。

var dates = ["2019-01-01", "2019-01-02", "2019-01-03"];
var formate = input.map((date) => {
  return moment(moment(date)).format('DD-MM-YYYY');      
});

console.log(formate);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-03
    • 1970-01-01
    • 1970-01-01
    • 2016-10-15
    • 1970-01-01
    • 2018-01-07
    • 2016-09-23
    • 1970-01-01
    相关资源
    最近更新 更多