【问题标题】:Date format and time zone JS [duplicate]日期格式和时区JS [重复]
【发布时间】:2020-06-03 08:45:16
【问题描述】:

我想解释一下我今天遇到的问题。

在下面的代码中,一切正常。问题是我收到以下格式的“创建”:

"created": "2020-02-18T13:45:01.652Z"

但我只想在没有秒数的情况下恢复时间:

postbackend = () => {
  const config = {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      ...this.state,
      items: newItems,
      created: new
      Date().toISOString()
    }),
  };
  const url = entrypoint + "/alluserpls";
  fetch(url, config)
    .then(res => res.json())
    .then(res => {
      if (res.error) {
        alert(res.error);
      } else {
        alert(`ajouté avec l'ID ${res}!`);
      }
    }).catch(e => {
      console.error(e);
    }).finally(() => this.setState({ redirect: true }));
}

您知道如何解决这个问题吗?内夫

【问题讨论】:

  • 2020-02-18T13:45:01.652Z 是 javascript 将每个 Date 对象作为字符串使用的格式。您可以使用new Date("2020-02-18T13:45:01.652Z") 从此字符串重建Date 对象。然后你可以使用这个对象来获取日期、月份、小时等......(date.getDate()date.getHours())你应该看看这个:developer.mozilla.org/fr/docs/Web/JavaScript/Reference/…如果你想要更随意的东西,试试momentjs它是一个用于处理日期的库(比较日期、格式化等)。
  • ``` var today = "2020-02-18T13:45:01.652Z"; console.log(today.split('').splice(11,22).join("")); ```试试这个。

标签: javascript reactjs axios fetch


【解决方案1】:

我建议您使用moments js 来处理与javascript 中的日期有关的任何事情。

moment("2020-02-18T13:45:01.652Z").format('YYYY-MM-DD HH:mm') // 2020-02-18 19:15

【讨论】:

  • 感谢您的文档,即使问题已解决,我也会看看
【解决方案2】:
var today = "2020-02-18T13:45:01.652Z";
console.log(today.split('').splice(11,5).join(""));

试试这个。

【讨论】:

  • 你的答案是错误的。它以秒和毫秒为单位提取时间。
  • @SparkFountain 请向我解释到底需要什么。因为我提供了我推断的答案,即从字符串中取出全部时间。另外,您可以删除反对票吗?
  • “我只想在没有秒数的情况下恢复时间”->这是问题,但您的答案仍然包括秒数。
  • @SparkFountain 我想它应该可以按预期工作。如果是,您可以删除否决票吗?
  • 好的,我看到你修好了。现在它可以正常工作了。我删除了反对票。
【解决方案3】:

您正在使用方法 Date().toISOString(),它返回符合 ISO 8601 的日期字符串 as explained in the official MDN documentation

如果你想格式化不带秒的日期,你应该使用另一种日期格式。在您的情况下,您可以定义自己的日期格式,使其看起来像 ISO 字符串,但没有秒和时区,例如:

let today = new Date().toISOString().slice(0,16);
console.info(today);

(改编自this StackOverflow post

如果您只想接收不带日期的时间,请改用:

let today = new Date().toISOString().slice(11,16);
console.info(today);

【讨论】:

  • 太好了,效果很好,知道我想换几个小时的区域吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多