2015-06-02 144 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