【问题标题】:Unrecognized Date format无法识别的日期格式
【发布时间】:2013-01-19 00:35:23
【问题描述】:

好!

我在从日期中提取数据时遇到了一些困难。问题是我从一个未记录的 API 中获得了一个数字。

“创建”:734394
"last_chapter_date": 734883

我尝试将其除以 365,242 天(一年的确切天数)

2010,705231052289
所以显然这些是自 0.0.0000 以来经过的天数

我目前正在尝试这样的事情: http://jsfiddle.net/LRUy5/4/

function zero21970(nDays) {
    // 0     70   2013  
    // |-----|-----|  

    // 0 to date
    var dateMils = nDays*24*60*60*100;
    // 0 to 1970
    zeroTo1970 = (1970*365.242)*24*60*60*100;

    //subtract time from 0-1970 from the time 0-date
    //to cut out the part from 1970-today
    return new Date(dateMils-zeroTo1970);
}

//http://www.mangaeden.com/api/manga/4e70e9f6c092255ef7004344/
zero21970(734394) //-> Jan 26 1974

我需要将它保存在数据库中并通过 php 或 javascript 使用它。 有谁认识这种格式,或者你知道一种方便的格式化方法吗?

编辑:我应该补充一点,最后一章是在 2013 年 1 月 15 日左右发布的......只是为了有一些东西可以抓住。

【问题讨论】:

  • 仅仅除以一年的平均天数是不够的。回想一下,自 0000 年 1 月 1 日以来,各个民族的日历发生了变化,因此从那时到现在的某些年份的天数少于(或多于)365 天。

标签: php javascript date date-format


【解决方案1】:

更新版本:

我猜如果最后一章是从 2013 年开始的,那么值是从 01.01.0001 开始的天数。所以我们可以更新初始日期以及将setHours 更改为setDate 方法以获得更高的准确性:

var date = new Date("0001");
date.setDate(734883);
date.toGMTString();  // "Tue, 15 Jan 2013 00:00:00 GMT"

演示: http://jsfiddle.net/LRUy5/6/


旧版本:

我找到了一种可以在我的计算机上成功运行的解决方案:

var date = new Date("0000");
date.setHours(734394 * 24);
date.toGMTString();  // "Mon, 13 Sep 2010 21:00:00 GMT"

演示: http://jsfiddle.net/LRUy5/5/

【讨论】:

  • '0000' 是一个有效的 ISO8601 或 RFC2822 日期吗? ('想知道这是如何 x 平台)
  • @broofa 应该是这样 :) 但是我在使用 setHourssetDate 时有点困惑:它给出的结果有点不同。
  • 我不明白这两个答案怎么会如此不同。
  • @Pointy 我使用不同的日期进行测试:734883 vs 734394
  • 哦,durr :-) 很好地解释了它
【解决方案2】:

如果你使用的是 PHP,那么你应该替换

return new Date(dateMils-zeroTo1970);

return date('Y-m-d', (dateMils-zeroTo1970));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-21
    • 2016-01-25
    • 1970-01-01
    • 2019-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多