国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PHP DateTime類計算早于改歷時間的坑

李世贊 / 2524人閱讀

摘要:并且在實際使用中,早于改歷之前的時間并沒用格里歷表式的習慣,都是換成儒略歷表達,所以類這樣的設計,等于說早于改歷的時間基本不能用的,還是得自己另外處理一遍。

時間戳只能計算 1970 年后的時間,由于需要計算更早的日期,發現 PHP 還有提供一個 DateTime類,但在使用中發現有問題。

1582年,因為舊歷精度問題,導致已經積累了十天的偏差,,所以此年10月5號~10月14號跳過,10月4號之后直接是10月15號,同時修個置閏規則,成為如今使用的格里高利歷。

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

問題出在1582年之前,之前應該是使用舊歷,也就是儒略歷,主要差異在置閏方法不同。
但PHP的DateTime類計算依然是按新歷計算(或者說計算時早于改歷不會自動換算成儒略歷),所以導致1300年之類整百年的時候,二月日期不對,實際傳入這天時,會自動換算成3月1號,diff計算天數差,也會有錯誤。

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

儒略歷,是格里歷的前身,由羅馬共和國獨裁官儒略·凱撒采納埃及亞歷山大的希臘數學家兼天文學家索西琴尼計算的歷法,在公元前45年1月1日起執行,取代舊羅馬歷歷法的一種歷法。一年設12個月,大小月交替,四年一閏,平年365日,閏年于二月底增加一閏日,年平均長度為365.25日。由于累積誤差隨著時間越來越大,1582年后被教皇格里高利十三世改善,變為格里歷,即沿用至今的公歷。
儒略歷

還有一個細節就是,儒略歷定制于公元前45年,是大小月交替的,但在5世紀的時候,有一次歷法改革,改變了月份劃分不是規律的大小月交替了(現行日歷樣式),資料上說明并不是很清楚,這點很容易遺漏(我也是請教了一下才發現這問題..)。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/25972.html

相關文章

  • php 插入時間 0000解決

    摘要:可以在指定字段的值的時候使用變量來自動插入系統的當前時間。以后任何時間修改表中的記錄時,對應記錄的值會自動被更新為當前的系統時間。 今天在做php作業的時候插入時間一直都是0000-0000-0000 后來才發現是插入數據庫那里少寫了一個美元符號$ 真是╮(╯_╰)╭ 不過也查找了一些相關的信息 Unix時間戳 UNIX 時間戳(timestamp)是 PHP 中關于時間日期一個很重...

    novo 評論0 收藏0
  • php 插入時間 0000解決

    摘要:可以在指定字段的值的時候使用變量來自動插入系統的當前時間。以后任何時間修改表中的記錄時,對應記錄的值會自動被更新為當前的系統時間。 今天在做php作業的時候插入時間一直都是0000-0000-0000 后來才發現是插入數據庫那里少寫了一個美元符號$ 真是╮(╯_╰)╭ 不過也查找了一些相關的信息 Unix時間戳 UNIX 時間戳(timestamp)是 PHP 中關于時間日期一個很重...

    waltr 評論0 收藏0
  • 如何使用Python+SeaTable實現計算兩個工作日天數

      小編寫這篇文章的一個主要目的,主要是用來給大家繼續講解關于python的一些實例,比如綜合運用Python+SeaTable,運用這個技能,可以實現相關的一些計算技能。比如可以實現連續性的計算兩個工作日天數,下面給大家詳細解答下。  當我們計算兩個日期間的間隔天數時,通常是用結束日期減去開始日期,但在實際的項目管理、任務管理、工作計劃等場景中,某些時間段會涉及雙休日、法定節假日,甚至還有公司自...

    89542767 評論0 收藏0
  • Java8新特性之日期處理

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

    Airy 評論0 收藏0
  • python tips

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

    fuchenxuan 評論0 收藏0

發表評論

0條評論

李世贊

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<