从 Date() 对象返回 dd-mm-yyyyy

Return dd-mm-yyyy from Date() object

本文关键字:返回 dd-mm-yyyyy 对象 Date      更新时间:2023-09-26

>期望的返回值应该是格式化为dd-mm-yyyy的字符串。

我试图给 ISOString 一个格式日期 dd-mm-yyyy 并添加 GMT,但代码给了我这种格式。我该怎么办?

new Date().toISOString()
    .replace(/T/, ' ').      // replace T with a space
    .replace(/'..+/, '');     // delete the dot and everything after
'

2012-11-04 14:55:45'

IM 正在寻找 04-11-2012 日期格式

使用今天的日期(作为 ISO 字符串,当前为"2016-03-08T13:51:13.382Z"),您可以执行以下操作:

new Date().toISOString().replace(/T.*/,'').split('-').reverse().join('-')

其输出为:

-> "08-03-2016"

这:

  1. 抓住日期。
  2. 将其转换为 ISO 字符串。
  3. 替换"T"及其后的所有内容。
  4. 通过拆分任何连字符 ('-') 字符将其转换为数组。( ["2016", "03", "08"]
  5. 颠倒数组的顺序。( ["08", "03", "2016"]
  6. 将数组作为字符串重新联接,用连字符分隔每个值。

下面是使用您的日期 (2012-11-04T14:55:45.000Z) 作为输入的演示:

var input = "2012-11-04T14:55:45.000Z",
    output;
output = new Date(input).toISOString().replace(/T.*/,'').split('-').reverse().join('-');
document.getElementById('input').innerHTML = input;
document.getElementById('output').innerHTML = output;
<p><strong>Input:</strong> <span id=input></span></p>
<p><strong>Output:</strong> <span id=output></span></p>

您可以使用

new Date().toLocaleDateString("en-US");仅返回日期。 这在今天"3/8/2016"回归。

new Date().toLocaleDateString().replace(/'//g, '-');会将其更改为带破折号的输出。 这将在今天"3-8-2016"回归。

对于您的示例 '2012-11-04 14:55:45'

您可以做到:new Date('2012-11-04 14:55:45').toISOString().split('T')[0]在一行中:)

您可以通过添加时区偏移量,然后调用toLocaleDateString(英式格式),同时将斜杠替换为短划线并删除逗号,将本地日期转换为 UTC 日期。

// Adapted from: https://stackoverflow.com/a/55571869/1762224
const toLocaleUTCDateString = (date, locales, options) =>
  new Date(date.valueOf() + (date.getTimezoneOffset() * 6e4))
    .toLocaleDateString(locales, options);
// 'en-GB' === 'dd/mm/yyyy'
const formatDate = date =>
  toLocaleUTCDateString(date, 'en-GB', {
    year: 'numeric',
    month: '2-digit',
    day: '2-digit',
    hour: '2-digit',
    minute: '2-digit',
    second: '2-digit'
  })
  .replace(/'//g, '-').replace(/,/, '');
const date = new Date();
console.log({
  'ISO-8601': date.toISOString(),
  'Custom': formatDate(date)
});
.as-console-wrapper { top: 0; max-height: 100% !important; }

或者,您可以尝试解析 ISO 8601 字符串:

const formatDate = _date =>
  (([year, month, date, hour, minute, second, milliseconds]) =>
    `${date}-${month}-${year} ${hour}:${minute}:${second}`)
  (_date.toISOString().split(/[^'d]/g));
const date = new Date();
console.log({
  'ISO-8601': date.toISOString(),
  'Custom': formatDate(date)
});
.as-console-wrapper { top: 0; max-height: 100% !important; }

如果要以dd-mm-yyyy格式获取日期,您可以使用自定义函数生成日、月和全年的 metods Date(),但如果日期或月份的数字小于 10,则日和月可能会返回小于 10 的数字,因此您可以检查它是否是,您添加 0,否则您将自己保留如下:

const date = () => { 
  let d = new Date();
  let day = d.getDate()
  let month = d.getMonth()
  return `${day < 10 ? "0" + day : day}-${month < 10 ? "0" + month : month}-${d.getFullYear()}`;
 }
 let el = document.querySelector('p');
 el.innerText = date();
<p></p>