commitall
This commit is contained in:
266
application/views/admin/nepali-date.php
Normal file
266
application/views/admin/nepali-date.php
Normal file
@@ -0,0 +1,266 @@
|
||||
<?php
|
||||
class nepali_date
|
||||
{
|
||||
|
||||
//List of month nepali
|
||||
|
||||
private $nepali_length = array(
|
||||
1975 => array(31,32,31,32,31,30,30,30,29,30,29,31),
|
||||
1976 => array(31,32,31,32,31,30,30,30,29,29,30,30),
|
||||
1977 => array(31,31,32,31,31,31,30,29,30,29,30,30),
|
||||
1978 => array(31,31,31,32,31,31,30,29,30,29,30,30),
|
||||
1979 => array(31,32,31,32,31,30,30,30,29,30,29,31),
|
||||
1980 => array(31,32,31,32,31,30,30,29,30,29,30,30),
|
||||
1981 => array(31,31,32,31,31,31,30,29,30,29,30,30),
|
||||
1982 => array(31,31,31,32,31,31,29,30,30,29,30,30),
|
||||
1983 => array(31,32,31,32,31,30,30,30,29,29,30,31),
|
||||
1984 => array(31,31,32,32,31,30,30,29,30,29,30,30),
|
||||
1985 => array(31,31,32,31,31,31,30,29,30,29,30,30),
|
||||
1986 => array(31,31,31,32,31,31,29,30,30,29,30,30),
|
||||
1987 => array(31,32,31,32,31,30,30,30,29,29,30,31),
|
||||
1988 => array(31,31,32,32,31,30,30,29,30,29,30,30),
|
||||
1989 => array(31,31,32,31,31,31,30,29,30,29,30,30),
|
||||
1990 => array(31,31,31,32,31,31,29,30,30,29,29,31),
|
||||
1991 => array(31,32,31,32,31,30,30,30,29,29,30,31),
|
||||
1992 => array(31,31,32,32,31,30,30,29,30,29,30,30),
|
||||
1993 => array(31,31,32,31,31,31,30,29,30,29,30,30),
|
||||
1994 => array(30,32,31,32,31,30,30,30,29,30,29,31),
|
||||
1995 => array(31,32,31,32,31,30,30,30,29,29,30,31),
|
||||
1996 => array(31,31,32,32,31,30,29,30,30,29,30,30),
|
||||
1997 => array(31,31,32,31,31,31,30,29,30,29,30,30),
|
||||
1998 => array(30,32,31,32,31,30,30,30,29,30,29,31),
|
||||
1999 => array(31,32,31,32,31,30,30,30,29,29,30,31),
|
||||
2000 => array(30,32,31,32,31,30,30,30,29,30,29,31),
|
||||
2001 => array(31,31,32,31,31,31,30,29,30,29,30,30),
|
||||
2002 => array(31,31,32,32,31,30,30,29,30,29,30,30),
|
||||
2003 => array(31,32,31,32,31,30,30,30,29,29,30,31),
|
||||
2004 => array(30,32,31,32,31,30,30,30,29,30,29,31),
|
||||
2005 => array(31,31,32,31,31,31,30,29,30,29,30,30),
|
||||
2006 => array(31,31,32,32,31,30,30,29,30,29,30,30),
|
||||
2007 => array(31,32,31,32,31,30,30,30,29,29,30,31),
|
||||
2008 => array(31,31,31,32,31,31,29,30,30,29,29,31),
|
||||
2009 => array(31,31,32,31,31,31,30,29,30,29,30,30),
|
||||
2010 => array(31,31,32,32,31,30,30,29,30,29,30,30),
|
||||
2011 => array(31,32,31,32,31,30,30,30,29,29,30,31),
|
||||
2012 => array(31,31,31,32,31,31,29,30,30,29,30,30),
|
||||
2013 => array(31,31,32,31,31,31,30,29,30,29,30,30),
|
||||
2014 => array(31,31,32,32,31,30,30,29,30,29,30,30),
|
||||
2015 => array(31,32,31,32,31,30,30,30,29,29,30,31),
|
||||
2016 => array(31,31,31,32,31,31,29,30,30,29,30,30),
|
||||
2017 => array(31,31,32,31,31,31,30,29,30,29,30,30),
|
||||
2018 => array(31,32,31,32,31,30,30,29,30,29,30,30),
|
||||
2019 => array(31,32,31,32,31,30,30,30,29,30,29,31),
|
||||
2020 => array(31,31,31,32,31,31,30,29,30,29,30,30),
|
||||
2021 => array(31,31,32,31,31,31,30,29,30,29,30,30),
|
||||
2022 => array(31,32,31,32,31,30,30,30,29,29,30,30),
|
||||
2023 => array(31,32,31,32,31,30,30,30,29,30,29,31),
|
||||
2024 => array(31,31,31,32,31,31,30,29,30,29,30,30),
|
||||
2025 => array(31,31,32,31,31,31,30,29,30,29,30,30),
|
||||
2026 => array(31,32,31,32,31,30,30,30,29,29,30,31),
|
||||
2027 => array(30,32,31,32,31,30,30,30,29,30,29,31),
|
||||
2028 => array(31,31,32,31,31,31,30,29,30,29,30,30),
|
||||
2029 => array(31,31,32,31,32,30,30,29,30,29,30,30),
|
||||
2030 => array(31,32,31,32,31,30,30,30,29,29,30,31),
|
||||
2031 => array(30,32,31,32,31,30,30,30,29,30,29,31),
|
||||
2032 => array(31,31,32,31,31,31,30,29,30,29,30,30),
|
||||
2033 => array(31,31,32,32,31,30,30,29,30,29,30,30),
|
||||
2034 => array(31,32,31,32,31,30,30,30,29,29,30,31),
|
||||
2035 => array(30,32,31,32,31,31,29,30,30,29,29,31),
|
||||
2036 => array(31,31,32,31,31,31,30,29,30,29,30,30),
|
||||
2037 => array(31,31,32,32,31,30,30,29,30,29,30,30),
|
||||
2038 => array(31,32,31,32,31,30,30,30,29,29,30,31),
|
||||
2039 => array(31,31,31,32,31,31,29,30,30,29,30,30),
|
||||
2040 => array(31,31,32,31,31,31,30,29,30,29,30,30),
|
||||
2041 => array(31,31,32,32,31,30,30,29,30,29,30,30),
|
||||
2042 => array(31,32,31,32,31,30,30,30,29,29,30,31),
|
||||
2043 => array(31,31,31,32,31,31,29,30,30,29,30,30),
|
||||
2044 => array(31,31,32,31,31,31,30,29,30,29,30,30),
|
||||
2045 => array(31,32,31,32,31,30,30,29,30,29,30,30),
|
||||
2046 => array(31,32,31,32,31,30,30,30,29,29,30,31),
|
||||
2047 => array(31,31,31,32,31,31,30,29,30,29,30,30),
|
||||
2048 => array(31,31,32,31,31,31,30,29,30,29,30,30),
|
||||
2049 => array(31,32,31,32,31,30,30,30,29,29,30,30),
|
||||
2050 => array(31,32,31,32,31,30,30,30,29,30,29,31),
|
||||
2051 => array(31,31,31,32,31,31,30,29,30,29,30,30),
|
||||
2052 => array(31,31,32,31,31,31,30,29,30,29,30,30),
|
||||
2053 => array(31,32,31,32,31,30,30,30,29,29,30,30),
|
||||
2054 => array(31,32,31,32,31,30,30,30,29,30,29,31),
|
||||
2055 => array(31,31,32,31,31,31,30,29,30,29,30,30),
|
||||
2056 => array(31,31,32,31,32,30,30,29,30,29,30,30),
|
||||
2057 => array(31,32,31,32,31,30,30,30,29,29,30,31),
|
||||
2058 => array(30,32,31,32,31,30,30,30,29,30,29,31),
|
||||
2059 => array(31,31,32,31,31,31,30,29,30,29,30,30),
|
||||
2060 => array(31,31,32,32,31,30,30,29,30,29,30,30),
|
||||
2061 => array(31,32,31,32,31,30,30,30,29,29,30,31),
|
||||
2062 => array(30,32,31,32,31,31,29,30,29,30,29,31),
|
||||
2063 => array(31,31,32,31,31,31,30,29,30,29,30,30),
|
||||
2064 => array(31,31,32,32,31,30,30,29,30,29,30,30),
|
||||
2065 => array(31,32,31,32,31,30,30,30,29,29,30,31),
|
||||
2066 => array(31,31,31,32,31,31,29,30,30,29,29,31),
|
||||
2067 => array(31,31,32,31,31,31,30,29,30,29,30,30),
|
||||
2068 => array(31,31,32,32,31,30,30,29,30,29,30,30),
|
||||
2069 => array(31,32,31,32,31,30,30,30,29,29,30,31),
|
||||
2070 => array(31,31,31,32,31,31,29,30,30,29,30,30),
|
||||
2071 => array(31,31,32,31,31,31,30,29,30,29,30,30),
|
||||
2072 => array(31,32,31,32,31,30,30,29,30,29,30,30),
|
||||
2073 => array(31,32,31,32,31,30,30,30,29,29,30,31),
|
||||
2074 => array(31,31,31,32,31,31,30,29,30,29,30,30),
|
||||
2075 => array(31,31,32,31,31,31,30,29,30,29,30,30),
|
||||
2076 => array(31,32,31,32,31,30,30,30,29,29,30,30),
|
||||
2077 => array(31,32,31,32,31,30,30,30,29,30,29,31),
|
||||
2078 => array(31,31,31,32,31,31,30,29,30,29,30,30),
|
||||
2079 => array(31,31,32,31,31,31,30,29,30,29,30,30),
|
||||
2080 => array(31,32,31,32,31,30,30,30,29,29,30,30),
|
||||
2081 => array(31,31,32,32,31,30,30,30,29,30,30,30),
|
||||
2082 => array(30,32,31,32,31,30,30,30,29,30,30,30),
|
||||
2083 => array(31,31,32,31,31,30,30,30,29,30,30,30),
|
||||
2084 => array(31,31,32,31,31,30,30,30,29,30,30,30),
|
||||
2085 => array(31,32,31,32,30,31,30,30,29,30,30,30),
|
||||
2086 => array(30,32,31,32,31,30,30,30,29,30,30,30),
|
||||
2087 => array(31,31,32,31,31,31,30,30,29,30,30,30),
|
||||
2088 => array(30,31,32,32,30,31,30,30,29,30,30,30),
|
||||
2089 => array(30,32,31,32,31,30,30,30,29,30,30,30),
|
||||
2090 => array(30,32,31,32,31,30,30,30,29,30,30,30),
|
||||
2091 => array(31,31,32,32,31,30,30,29,30,29,30,30),
|
||||
2092 => array(30,31,32,32,31,30,30,30,29,30,30,30),
|
||||
2093 => array(30,32,31,32,31,30,30,30,29,29,30,30),
|
||||
2094 => array(31,31,32,31,31,30,30,30,29,30,30,30),
|
||||
2095 => array(31,31,32,31,31,31,30,29,30,30,30,30)
|
||||
//OH GOD! I am tired.
|
||||
);
|
||||
|
||||
private $firstday_en ="1918-04-13";
|
||||
private $start_ne = "1975";
|
||||
private $start_en = "1918";
|
||||
private $end_ne = "2095";
|
||||
private $end_en = "2038";
|
||||
private $month_name = array('बैशाख', 'जेठ', 'असार', 'साउन', 'भदौ', 'असोज', 'कार्तिक', 'मङ्सिर', 'पुस', 'माघ', 'फाल्गुण', 'चैत');
|
||||
private $day_name = array('अाईतबार', 'सोमबार', 'मङ्गलबार', 'बुधबार', 'बिहिबार', 'शुक्रबार', 'शनिवार');
|
||||
|
||||
private function get_week_ne($year, $month, $day)
|
||||
{
|
||||
$jd = GregorianToJD($month, $day, $year);
|
||||
return $this->day_name[JDDayOfWeek($jd,0)];
|
||||
}
|
||||
|
||||
private function validate_ne($year, $month, $day)
|
||||
{
|
||||
if(!array_key_exists($year, $this->nepali_length))
|
||||
{
|
||||
return 'Invalid <b>Year</b> range';
|
||||
}
|
||||
if($month >12 || $month<1)
|
||||
{
|
||||
return 'Invalid <b>Month</b> range';
|
||||
}
|
||||
if($day>$this->nepali_length[$year][$month-1] || $day<1)
|
||||
{
|
||||
return 'Invalid <b>Day</b>';
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
private function validate_en($year, $month, $day)
|
||||
{
|
||||
if ($year < $this->start_en || $year>$this->end_en) { return 'Invalid Year Range';}
|
||||
if ($month < 1 || $month>12) { return 'Invalid Month Range';}
|
||||
if ($day < 1 || ($day>cal_days_in_month(CAL_GREGORIAN, $month, $year)))
|
||||
{ return 'Invalid day Range';}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
//Convert AD to Bs
|
||||
public function get_nepali_date($year,$month,$day)
|
||||
{
|
||||
$validate = $this->validate_en($year, $month, $day);
|
||||
if($validate !== TRUE)
|
||||
{
|
||||
die($validate);
|
||||
}
|
||||
|
||||
$date = $year.'-'.$month.'-'.$day;
|
||||
$dayname = $this->get_week_ne($year, $month, $day);
|
||||
$date_start=date_create($this->firstday_en);
|
||||
$date_today=date_create($date);
|
||||
$diff=date_diff($date_start,$date_today, true);
|
||||
$days = $diff->format("%a");
|
||||
$arr='0';
|
||||
$mm='';
|
||||
for ($i=$this->start_ne; $i<$this->end_ne; $i++)
|
||||
{
|
||||
$arr+=array_sum($this->nepali_length[$i]);
|
||||
|
||||
if ($arr>$days)
|
||||
{
|
||||
$year = $i;
|
||||
|
||||
$count_previous=$arr-array_sum($this->nepali_length[$i]);
|
||||
$year_previous = $i-1;
|
||||
for ($j=0; $j < 12; $j++)
|
||||
{
|
||||
$count_previous+= $this->nepali_length[$i][$j];
|
||||
if($count_previous>$days)
|
||||
{
|
||||
$month = $j+1; //Even I don't Know Why should I add 1 :p
|
||||
$daysss = $count_previous-$days;
|
||||
$dayss = ($this->nepali_length[$i][$j]-$daysss)+1;
|
||||
break;
|
||||
} elseif ($count_previous==$days)
|
||||
{
|
||||
$year = $i;
|
||||
$month = $j+1;
|
||||
$day = 1;
|
||||
}
|
||||
}
|
||||
break;
|
||||
} elseif($arr==$days)
|
||||
{
|
||||
$year = $i+1;
|
||||
$month = 1;
|
||||
$day = 1;
|
||||
}
|
||||
}
|
||||
$date = array();
|
||||
$date['y'] = $year;
|
||||
$date['m'] = $month;
|
||||
$date['M'] = $this->month_name[$month-1];
|
||||
$date['d'] = $dayss;
|
||||
$date['l'] = $dayname;
|
||||
return $date;
|
||||
}
|
||||
|
||||
|
||||
//Convert Nepali Date to english
|
||||
public function get_eng_date($year, $month, $day)
|
||||
{
|
||||
$validate = $this->validate_ne($year, $month, $day);
|
||||
if($validate !== TRUE)
|
||||
{
|
||||
die($validate);
|
||||
}
|
||||
|
||||
$date_start = date_create($this->firstday_en);
|
||||
$daycount = '0';
|
||||
$months=$month-1;
|
||||
for($i=$this->start_ne;$i<$year; $i++)
|
||||
{
|
||||
$daycount+=array_sum($this->nepali_length[$i]);
|
||||
}
|
||||
for($j=0; $j<$months; $j++)
|
||||
{
|
||||
$daycount+=$this->nepali_length[$i][$j];
|
||||
}
|
||||
$daycount+=$day-1;
|
||||
|
||||
$nep = date_add($date_start, date_interval_create_from_date_string($daycount." days"));
|
||||
$date = array();
|
||||
$date['y'] = date_format($nep, "Y");
|
||||
$date['m'] = date_format($nep, "m");
|
||||
$date['M'] = date_format($nep, "M");
|
||||
$date['d'] = date_format($nep, "d");
|
||||
$date['l'] = date_format($nep, "l");
|
||||
return $date;
|
||||
}
|
||||
//end of class
|
||||
}
|
||||
|
||||
?>
|
Reference in New Issue
Block a user