【问题标题】:How to convert this date into actual date如何将此日期转换为实际日期
【发布时间】:2020-03-11 20:39:19
【问题描述】:

所以这对我来说是一个新的。我一直在使用这个 api,他们返回了一个 json 格式的日期,看起来像这样

{
 DateAdd: "/Date(1582936941390-0600)/"
}

不完全确定如何将其转换为如下格式的日期时间,以便我可以实际使用它。

2020-03-13 23:08:00

我以前从未见过这种日期格式!谢谢

【问题讨论】:

  • 这可能是某种纪元时间格式,例如从 1970 年开始的秒数或其他时间。建议将 momentjs 导入您的项目并使用它来让您的生活更轻松。
  • 仅供参考,moment.js 是一个 329 kb 的库。
  • API 是否有关于其日期/时间戳格式的文档?
  • 不,它没有提供任何文档。但我会研究一下 JS 似乎每个人都在使用这个
  • 您可能会使用 moment.js 来确定格式是什么。也许它具有某种格式识别功能。一旦弄清楚格式是什么,就可以编写自己的函数来解析它。但是如果你在前端使用它,你绝对不应该使用 moment.js;这是巨大的。 date-fns 是一个不错的选择。虽然我不确定它是否会处理这种格式。

标签: javascript jquery json date


【解决方案1】:

使用moment.js转换日期格式

var data = {
 DateAdd: "/Date(1582936941390-0600)/"
}
var datam = moment(data.DateAdd)
console.log(datam.format("YYYY-MM-DD HH:mm:ss")) // 2020-02-29 07:42:21
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment-with-locales.min.js"></script>

【讨论】:

  • 仅供参考,moment.js 是一个 329 kb 的库。
  • 克里斯坦感谢您的回答!看起来很简单的家伙。谢谢@Cully,我只是想问我应该为这件事使用整个图书馆吗?很小
  • 请注意,moment.js 忽略时区偏移。这相当于带格式的Robo Robok's answer
【解决方案2】:

如果您不关心时区,您可以从该字符串中删除时间戳:

const dateString = data.DateAdd;
const date = new Date(Number(dateString.match(/\d+/)[0]));

【讨论】:

  • 谢谢老兄,我实际上需要时区。试图避免剥离它。
【解决方案3】:

您可以通过 Javascript 日期 对象将日期转换为所需的格式。

let addZero = (i) => {
        if (i < 10) {
            i = "0" + i;
        }
        return i;
    }
    
let formatDate = (date) => {
        let year = date.getFullYear(),
            month = addZero(date.getMonth() + 1),
            day = addZero(date.getDate() + 1),
            hours = addZero(date.getHours() + 1),
            minutes = addZero(date.getMinutes() + 1),
            seconds = addZero(date.getSeconds() + 1);
        let dateArr = [year, month, day];
        let timeArr = [hours, minutes, seconds];
        let result = dateArr.join('-').concat(" ", timeArr.join(':'));
        return result;
    }
    
let inputString = "/Date(1582936941390-0600)/";
let inputData = new Date(Number(inputString.match(/\d+/)[0]));

console.log(formatDate(inputData));

请阅读更多关于Javascript date object

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多