2015-06-02 184 views
0

我正在處理已在2個國家/地區運行的項目。在我們在尼泊爾部署該項目之前,一切都很好。問題是他們沒有使用標準的格里曆日曆。他們有他們自己的日曆,叫做Bikram Sanwant日曆。我們現有的數據庫有DateTime/Date列,我不能再使用它了,因爲根據公曆日曆,在他們的日曆中有幾個月有32天不是有效日期。所以我們考慮將日期保存在日期,月份和年份等3個不同列中。不僅如此,我們還使用了諸如DateAdd,DateDiff等內置的標準SQL日期時間函數...因此,我還必須編寫自己的函數並更改所有查詢,存儲過程和函數。不同日曆的日期

有誰知道如何處理這個問題或對這個問題有更好的想法?

請給出您的意見和建議。

在此先感謝。

+0

只能存儲一個日期,ISO格式。根據Bikram Sanwant的觀點/功能來查看和修改。 – jarlh

+0

某些編程語言在其庫中提供了對BS日期的轉換,如果您正在使用的語言不支持它,那麼您可以在應用程序中進行轉換,那麼您應該創建一個:D –

+0

感謝您的評論,但ISO格式將接受像2072-08-32這樣的日期? –

回答

0

檢查此代碼將AD轉換爲BS。希望這會幫助你更多地理解。

<?php 
    //The Vikram Samvat calendar is 56 years 8 months and 14 days ahead (in count) of the solar Gregorian calendar 
    //date_default_timezone_set('Asia/Kathmandu'); 

    $date = date('Y-m-d'); 
    $ts1 = strtotime($date); 
    $year1 = date('Y', $ts1) + 56; 
    $month1 = date('m', $ts1) + 8; 
    $day1 = date('d', $ts1) + 14; 

    if($month1 >12) { 
     $year1 = $year1+1; 
     //$remMonth = $month1-12; 
     $month1 = $month1-12; 
    } 

    if($day1 >30) { 
     $month1 = $month1+1; 
     //$remMonth = $month1-12; 
     $day1 = $day1-30; 
    } 

    //$day1 = date('d', $ts1); 
    echo $year1."-".$month1."-".$day1; 

?> 
+0

@Kurt Van den Branden:謝謝格式化。 – Gyan