成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

PHP DateTime類(lèi)計(jì)算早于改歷時(shí)間的坑

李世贊 / 2539人閱讀

摘要:并且在實(shí)際使用中,早于改歷之前的時(shí)間并沒(méi)用格里歷表式的習(xí)慣,都是換成儒略歷表達(dá),所以類(lèi)這樣的設(shè)計(jì),等于說(shuō)早于改歷的時(shí)間基本不能用的,還是得自己另外處理一遍。

時(shí)間戳只能計(jì)算 1970 年后的時(shí)間,由于需要計(jì)算更早的日期,發(fā)現(xiàn) PHP 還有提供一個(gè) DateTime類(lèi),但在使用中發(fā)現(xiàn)有問(wèn)題。

1582年,因?yàn)榕f歷精度問(wèn)題,導(dǎo)致已經(jīng)積累了十天的偏差,,所以此年10月5號(hào)~10月14號(hào)跳過(guò),10月4號(hào)之后直接是10月15號(hào),同時(shí)修個(gè)置閏規(guī)則,成為如今使用的格里高利歷。

現(xiàn)行公歷(拉丁語(yǔ):Calendarium Gregorianum,又譯格里歷、國(guó)瑞歷、額我略歷、格列高利歷、格里高利歷、葛瑞格里歷、格列高歷,也稱(chēng)基督歷),是由意大利醫(yī)生兼哲學(xué)家阿洛伊修斯·里利烏斯改革儒略歷制定的歷法,由羅馬大公教會(huì)教宗格列高利十三世在1582年頒行。
格里歷與儒略歷一樣,格里歷也是每四年在2月底置一閏日,但格里歷特別規(guī)定,除非能被400整除,所有的世紀(jì)年(能被100整除)都不設(shè)閏日;如此,每四百年,格里歷僅有97個(gè)閏年,比儒略歷減少3個(gè)閏年。
格里高利歷

問(wèn)題出在1582年之前,之前應(yīng)該是使用舊歷,也就是儒略歷,主要差異在置閏方法不同。
但PHP的DateTime類(lèi)計(jì)算依然是按新歷計(jì)算(或者說(shuō)計(jì)算時(shí)早于改歷不會(huì)自動(dòng)換算成儒略歷),所以導(dǎo)致1300年之類(lèi)整百年的時(shí)候,二月日期不對(duì),實(shí)際傳入這天時(shí),會(huì)自動(dòng)換算成3月1號(hào),diff計(jì)算天數(shù)差,也會(huì)有錯(cuò)誤。

并且在實(shí)際使用中,早于改歷之前的時(shí)間并沒(méi)用格里歷表式的習(xí)慣,都是換成儒略歷表達(dá),所以DateTime類(lèi)這樣的設(shè)計(jì),等于說(shuō)早于改歷的時(shí)間基本不能用的,還是得自己另外處理一遍。(其他語(yǔ)言像是C#提供的歷法計(jì)算似乎也存在類(lèi)似情況)。

儒略歷,是格里歷的前身,由羅馬共和國(guó)獨(dú)裁官儒略·凱撒采納埃及亞歷山大的希臘數(shù)學(xué)家兼天文學(xué)家索西琴尼計(jì)算的歷法,在公元前45年1月1日起執(zhí)行,取代舊羅馬歷歷法的一種歷法。一年設(shè)12個(gè)月,大小月交替,四年一閏,平年365日,閏年于二月底增加一閏日,年平均長(zhǎng)度為365.25日。由于累積誤差隨著時(shí)間越來(lái)越大,1582年后被教皇格里高利十三世改善,變?yōu)楦窭餁v,即沿用至今的公歷。
儒略歷

還有一個(gè)細(xì)節(jié)就是,儒略歷定制于公元前45年,是大小月交替的,但在5世紀(jì)的時(shí)候,有一次歷法改革,改變了月份劃分不是規(guī)律的大小月交替了(現(xiàn)行日歷樣式),資料上說(shuō)明并不是很清楚,這點(diǎn)很容易遺漏(我也是請(qǐng)教了一下才發(fā)現(xiàn)這問(wèn)題..)。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/25972.html

相關(guān)文章

  • php 插入時(shí)間 0000解決

    摘要:可以在指定字段的值的時(shí)候使用變量來(lái)自動(dòng)插入系統(tǒng)的當(dāng)前時(shí)間。以后任何時(shí)間修改表中的記錄時(shí),對(duì)應(yīng)記錄的值會(huì)自動(dòng)被更新為當(dāng)前的系統(tǒng)時(shí)間。 今天在做php作業(yè)的時(shí)候插入時(shí)間一直都是0000-0000-0000 后來(lái)才發(fā)現(xiàn)是插入數(shù)據(jù)庫(kù)那里少寫(xiě)了一個(gè)美元符號(hào)$ 真是╮(╯_╰)╭ 不過(guò)也查找了一些相關(guān)的信息 Unix時(shí)間戳 UNIX 時(shí)間戳(timestamp)是 PHP 中關(guān)于時(shí)間日期一個(gè)很重...

    novo 評(píng)論0 收藏0
  • php 插入時(shí)間 0000解決

    摘要:可以在指定字段的值的時(shí)候使用變量來(lái)自動(dòng)插入系統(tǒng)的當(dāng)前時(shí)間。以后任何時(shí)間修改表中的記錄時(shí),對(duì)應(yīng)記錄的值會(huì)自動(dòng)被更新為當(dāng)前的系統(tǒng)時(shí)間。 今天在做php作業(yè)的時(shí)候插入時(shí)間一直都是0000-0000-0000 后來(lái)才發(fā)現(xiàn)是插入數(shù)據(jù)庫(kù)那里少寫(xiě)了一個(gè)美元符號(hào)$ 真是╮(╯_╰)╭ 不過(guò)也查找了一些相關(guān)的信息 Unix時(shí)間戳 UNIX 時(shí)間戳(timestamp)是 PHP 中關(guān)于時(shí)間日期一個(gè)很重...

    waltr 評(píng)論0 收藏0
  • 如何使用Python+SeaTable實(shí)現(xiàn)計(jì)算兩個(gè)工作日天數(shù)

      小編寫(xiě)這篇文章的一個(gè)主要目的,主要是用來(lái)給大家繼續(xù)講解關(guān)于python的一些實(shí)例,比如綜合運(yùn)用Python+SeaTable,運(yùn)用這個(gè)技能,可以實(shí)現(xiàn)相關(guān)的一些計(jì)算技能。比如可以實(shí)現(xiàn)連續(xù)性的計(jì)算兩個(gè)工作日天數(shù),下面給大家詳細(xì)解答下。  當(dāng)我們計(jì)算兩個(gè)日期間的間隔天數(shù)時(shí),通常是用結(jié)束日期減去開(kāi)始日期,但在實(shí)際的項(xiàng)目管理、任務(wù)管理、工作計(jì)劃等場(chǎng)景中,某些時(shí)間段會(huì)涉及雙休日、法定節(jié)假日,甚至還有公司自...

    89542767 評(píng)論0 收藏0
  • Java8新特性之日期處理

    摘要:處理日期日歷和時(shí)間的不足之處將設(shè)定為可變類(lèi)型,以及的非線程安全使其應(yīng)用非常受限。最完整的日期時(shí)間,包含時(shí)區(qū)和相對(duì)或格林威治的時(shí)差。獲取當(dāng)前的日期中的用于表示當(dāng)天日期。 簡(jiǎn)介 伴隨 lambda表達(dá)式、streams 以及一系列小優(yōu)化,Java 8 推出了全新的日期時(shí)間API。 Java處理日期、日歷和時(shí)間的不足之處:將 java.util.Date 設(shè)定為可變類(lèi)型,以及 SimpleD...

    Airy 評(píng)論0 收藏0
  • python tips

    摘要:中的可以起到與此處相同的效果判斷奇數(shù)自然是使用位操作最快了刪除要?jiǎng)h除的數(shù)量較多超多一半的話,建議重新生成如果數(shù)量較少,在和都可以的情況下,稍快一些 給dict設(shè)置默認(rèn)值 這樣能設(shè)置所有key的默認(rèn)值為[],包括新添的key from collections import defaultdict context = defaultdict(list) setdefault一次只能設(shè)置一個(gè)...

    fuchenxuan 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<