How to display current Nepali date in WordPress?

April 13, 2020 0 comments
How to display current Nepali date in WordPress?

With the drastic rising of Nepali news portal and blogging websites in Nepal, usage of Nepali Date is common in most of the sites. Hence,WordPress CMS usage is rising in incremental graphs because of simplicity and ease of use.

In most news portal, you can see the Nepali Date appearing either on the top of the page or on the single news post on your WordPress news portal or blogging websites.

 

In most tutorials, you can see people implementing outdated code or lengthy steps to generate traffic or revenue to display Nepali date but I don’t prefer length steps neither I have implemented any advertisements.

Please follow the instruction carefully to display the current Nepali date in your WordPress Website.

  1. Create a new folder named “inc” and inside it, new file called “nep_calendar.php” inside your theme folder and insert the following code.
    <?php
    /**
    * @Author: developer
    * @Date: 2020-04-02 22:14:00
    * @Last Modified by: developer
    * @Last Modified time: 2020-04-02 22:29:02
    */
    class Nepali_Calendar
    {
    // Data for nepali date
    private $_bs = array(
    0 => array(2000,30,32,31,32,31,30,30,30,29,30,29,31),
    1 => array(2001,31,31,32,31,31,31,30,29,30,29,30,30),
    2 => array(2002,31,31,32,32,31,30,30,29,30,29,30,30),
    3 => array(2003,31,32,31,32,31,30,30,30,29,29,30,31),
    4 => array(2004,30,32,31,32,31,30,30,30,29,30,29,31),
    5 => array(2005,31,31,32,31,31,31,30,29,30,29,30,30),
    6 => array(2006,31,31,32,32,31,30,30,29,30,29,30,30),
    7 => array(2007,31,32,31,32,31,30,30,30,29,29,30,31),
    8 => array(2008,31,31,31,32,31,31,29,30,30,29,29,31),
    9 => array(2009,31,31,32,31,31,31,30,29,30,29,30,30),
    10 => array(2010,31,31,32,32,31,30,30,29,30,29,30,30),
    11 => array(2011,31,32,31,32,31,30,30,30,29,29,30,31),
    12 => array(2012,31,31,31,32,31,31,29,30,30,29,30,30),
    13 => array(2013,31,31,32,31,31,31,30,29,30,29,30,30),
    14 => array(2014,31,31,32,32,31,30,30,29,30,29,30,30),
    15 => array(2015,31,32,31,32,31,30,30,30,29,29,30,31),
    16 => array(2016,31,31,31,32,31,31,29,30,30,29,30,30),
    17 => array(2017,31,31,32,31,31,31,30,29,30,29,30,30),
    18 => array(2018,31,32,31,32,31,30,30,29,30,29,30,30),
    19 => array(2019,31,32,31,32,31,30,30,30,29,30,29,31),
    20 => array(2020,31,31,31,32,31,31,30,29,30,29,30,30),
    21 => array(2021,31,31,32,31,31,31,30,29,30,29,30,30),
    22 => array(2022,31,32,31,32,31,30,30,30,29,29,30,30),
    23 => array(2023,31,32,31,32,31,30,30,30,29,30,29,31),
    24 => array(2024,31,31,31,32,31,31,30,29,30,29,30,30),
    25 => array(2025,31,31,32,31,31,31,30,29,30,29,30,30),
    26 => array(2026,31,32,31,32,31,30,30,30,29,29,30,31),
    27 => array(2027,30,32,31,32,31,30,30,30,29,30,29,31),
    28 => array(2028,31,31,32,31,31,31,30,29,30,29,30,30),
    29 => array(2029,31,31,32,31,32,30,30,29,30,29,30,30),
    30 => array(2030,31,32,31,32,31,30,30,30,29,29,30,31),
    31 => array(2031,30,32,31,32,31,30,30,30,29,30,29,31),
    32 => array(2032,31,31,32,31,31,31,30,29,30,29,30,30),
    33 => array(2033,31,31,32,32,31,30,30,29,30,29,30,30),
    34 => array(2034,31,32,31,32,31,30,30,30,29,29,30,31),
    35 => array(2035,30,32,31,32,31,31,29,30,30,29,29,31),
    36 => array(2036,31,31,32,31,31,31,30,29,30,29,30,30),
    37 => array(2037,31,31,32,32,31,30,30,29,30,29,30,30),
    38 => array(2038,31,32,31,32,31,30,30,30,29,29,30,31),
    39 => array(2039,31,31,31,32,31,31,29,30,30,29,30,30),
    40 => array(2040,31,31,32,31,31,31,30,29,30,29,30,30),
    41 => array(2041,31,31,32,32,31,30,30,29,30,29,30,30),
    42 => array(2042,31,32,31,32,31,30,30,30,29,29,30,31),
    43 => array(2043,31,31,31,32,31,31,29,30,30,29,30,30),
    44 => array(2044,31,31,32,31,31,31,30,29,30,29,30,30),
    45 => array(2045,31,32,31,32,31,30,30,29,30,29,30,30),
    46 => array(2046,31,32,31,32,31,30,30,30,29,29,30,31),
    47 => array(2047,31,31,31,32,31,31,30,29,30,29,30,30),
    48 => array(2048,31,31,32,31,31,31,30,29,30,29,30,30),
    49 => array(2049,31,32,31,32,31,30,30,30,29,29,30,30),
    50 => array(2050,31,32,31,32,31,30,30,30,29,30,29,31),
    51 => array(2051,31,31,31,32,31,31,30,29,30,29,30,30),
    52 => array(2052,31,31,32,31,31,31,30,29,30,29,30,30),
    53 => array(2053,31,32,31,32,31,30,30,30,29,29,30,30),
    54 => array(2054,31,32,31,32,31,30,30,30,29,30,29,31),
    55 => array(2055,31,31,32,31,31,31,30,29,30,29,30,30),
    56 => array(2056,31,31,32,31,32,30,30,29,30,29,30,30),
    57 => array(2057,31,32,31,32,31,30,30,30,29,29,30,31),
    58 => array(2058,30,32,31,32,31,30,30,30,29,30,29,31),
    59 => array(2059,31,31,32,31,31,31,30,29,30,29,30,30),
    60 => array(2060,31,31,32,32,31,30,30,29,30,29,30,30),
    61 => array(2061,31,32,31,32,31,30,30,30,29,29,30,31),
    62 => array(2062,30,32,31,32,31,31,29,30,29,30,29,31),
    63 => array(2063,31,31,32,31,31,31,30,29,30,29,30,30),
    64 => array(2064,31,31,32,32,31,30,30,29,30,29,30,30),
    65 => array(2065,31,32,31,32,31,30,30,30,29,29,30,31),
    66 => array(2066,31,31,31,32,31,31,29,30,30,29,29,31),
    67 => array(2067,31,31,32,31,31,31,30,29,30,29,30,30),
    68 => array(2068,31,31,32,32,31,30,30,29,30,29,30,30),
    69 => array(2069,31,32,31,32,31,30,30,30,29,29,30,31),
    70 => array(2070,31,31,31,32,31,31,29,30,30,29,30,30),
    71 => array(2071,31,31,32,31,31,31,30,29,30,29,30,30),
    72 => array(2072,31,32,31,32,31,30,30,29,30,29,30,30),
    73 => array(2073,31,32,31,32,31,30,30,30,29,29,30,31),
    74 => array(2074,31,31,31,32,31,31,30,29,30,29,30,30),
    75 => array(2075,31,31,32,31,31,31,30,29,30,29,30,30),
    76 => array(2076,31,32,31,32,31,30,30,30,29,29,30,30),
    77 => array(2077,31,32,31,32,31,30,30,30,29,30,29,31),
    78 => array(2078,31,31,31,32,31,31,30,29,30,29,30,30),
    79 => array(2079,31,31,32,31,31,31,30,29,30,29,30,30),
    80 => array(2080,31,32,31,32,31,30,30,30,29,29,30,30),
    81 => array(2081,31,31,32,32,31,30,30,30,29,30,30,30),
    82 => array(2082,30,32,31,32,31,30,30,30,29,30,30,30),
    83 => array(2083,31,31,32,31,31,30,30,30,29,30,30,30),
    84 => array(2084,31,31,32,31,31,30,30,30,29,30,30,30),
    85 => array(2085,31,32,31,32,30,31,30,30,29,30,30,30),
    86 => array(2086,30,32,31,32,31,30,30,30,29,30,30,30),
    87 => array(2087,31,31,32,31,31,31,30,30,29,30,30,30),
    88 => array(2088,30,31,32,32,30,31,30,30,29,30,30,30),
    89 => array(2089,30,32,31,32,31,30,30,30,29,30,30,30),
    90 => array(2090,30,32,31,32,31,30,30,30,29,30,30,30)
    );
    private $_nep_date = array('year' => '', 'month' => '', 'date' => '', 'day' => '', 'nmonth' => '', 'num_day' => '');
    private $_eng_date = array('year' => '', 'month' => '', 'date' => '', 'day' => '', 'emonth' => '', 'num_day' => '');
    public $debug_info = "";
    /**
    * Return day
    *
    * @param int $day
    * @return string
    */
    private function _get_day_of_week($day)
    {
    switch ($day)
    {
    case 1:
    $day = "आइतबार";
    break;
    case 2:
    $day = "सोमबार";
    break;
    case 3:
    $day = "मंगलबार";
    break;
    case 4:
    $day = "बुधबार";
    break;
    case 5:
    $day = "बिहिबार";
    break;
    case 6:
    $day = "शुक्रबार";
    break;
    case 7:
    $day = "शनिबार";
    break;
    }
    return $day;
    }
    private function get_nepali_number($nepnumber)
    {
    switch ($nepnumber)
    {
    case 0:
    $nepnumber = "०";
    break;
    case 1:
    $nepnumber = "१";
    break;
    case 2:
    $nepnumber = "२";
    break;
    case 3:
    $nepnumber = "३";
    break;
    case 4:
    $nepnumber = "४";
    break;
    case 5:
    $nepnumber = "५";
    break;
    case 6:
    $nepnumber = "६";
    break;
    case 7:
    $nepnumber = "७";
    break;
    case 7:
    $nepnumber = "८";
    break;
    case 7:
    $nepnumber = "९";
    break;
    }
    return $nepnumber;
    }
    /**
    * Return english month name
    *
    * @param int $m
    * @return string
    */
    private function _get_english_month($m)
    {
    $eMonth = FALSE;
    switch ($m)
    {
    case 1:
    $eMonth = "January";
    break;
    case 2:
    $eMonth = "February";
    break;
    case 3:
    $eMonth = "March";
    break;
    case 4:
    $eMonth = "April";
    break;
    case 5:
    $eMonth = "May";
    break;
    case 6:
    $eMonth = "June";
    break;
    case 7:
    $eMonth = "July";
    break;
    case 8:
    $eMonth = "August";
    break;
    case 9:
    $eMonth = "September";
    break;
    case 10:
    $eMonth = "October";
    break;
    case 11:
    $eMonth = "November";
    break;
    case 12:
    $eMonth = "December";
    }
    return $eMonth;
    }
    /**
    * Return nepali month name
    *
    * @param int $m
    * @return string
    */
    private function _get_nepali_month($m)
    {
    $n_month = FALSE;
    switch ($m)
    {
    case 1:
    $n_month = "बैसाख";
    break;
    case 2:
    $n_month = "जेठ";
    break;
    case 3:
    $n_month = "असार";
    break;
    case 4:
    $n_month = "साउन";
    break;
    case 5:
    $n_month = "भाद्र";
    break;
    case 6:
    $n_month = "अषोज";
    break;
    case 7:
    $n_month = "कार्तिक";
    break;
    case 8:
    $n_month = "मंग्सिर";
    break;
    case 9:
    $n_month = "पुष";
    break;
    case 10:
    $n_month = "माघ";
    break;
    case 11:
    $n_month = "फागुण";
    break;
    case 12:
    $n_month = "चैत्र";
    break;
    }
    return $n_month;
    }
    /**
    * Check if date range is in english
    *
    * @param int $yy
    * @param int $mm
    * @param int $dd
    * @return bool
    */
    private function _is_in_range_eng($yy, $mm, $dd)
    {
    if ($yy < 1944 || $yy > 2033)
    {
    return 'Supported only between 1944-2022';
    }
    if ($mm < 1 || $mm > 12)
    {
    return 'Error! month value can be between 1-12 only';
    }
    if ($dd < 1 || $dd > 31)
    {
    return 'Error! day value can be between 1-31 only';
    }
    return TRUE;
    }
    /**
    * Check if date is with in nepali data range
    *
    * @param int $yy
    * @param int $mm
    * @param int $dd
    * @return bool
    */
    private function _is_in_range_nep($yy, $mm, $dd)
    {
    if ($yy < 2000 || $yy > 2089)
    {
    return 'Supported only between 2000-2089';
    }
    if ($mm < 1 || $mm > 12)
    {
    return 'Error! month value can be between 1-12 only';
    }
    if ($dd < 1 || $dd > 32)
    {
    return 'Error! day value can be between 1-31 only';
    }
    return TRUE;
    }
    /**
    * Calculates wheather english year is leap year or not
    *
    * @param int $year
    * @return bool
    */
    public function is_leap_year($year)
    {
    $a = $year;
    if ($a % 100 == 0)
    {
    if ($a % 400 == 0)
    {
    return TRUE;
    }
    else
    {
    return FALSE;
    }
    }
    else
    {
    if ($a % 4 == 0)
    {
    return TRUE;
    }
    else
    {
    return FALSE;
    }
    }
    }
    /**
    * currently can only calculate the date between AD 1944-2033...
    *
    * @param int $yy
    * @param int $mm
    * @param int $dd
    * @return array
    */
    public function eng_to_nep($yy, $mm, $dd)
    {
    // Check for date range
    $chk = $this->_is_in_range_eng($yy, $mm, $dd);
    if($chk !== TRUE)
    {
    die($chk);
    }
    else
    {
    // Month data.
    $month = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
    // Month for leap year
    $lmonth = array(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
    $def_eyy = 1944; // initial english date.
    $def_nyy = 2000;
    $def_nmm = 9;
    $def_ndd = 17 - 1; // inital nepali date.
    $total_eDays = 0;
    $total_nDays = 0;
    $a = 0;
    $day = 7 - 1;
    $m = 0;
    $y = 0;
    $i = 0;
    $j = 0;
    $numDay = 0;
    // Count total no. of days in-terms year
    for ($i = 0; $i < ($yy - $def_eyy); $i++) //total days for month calculation...(english)
    {
    if ($this->is_leap_year($def_eyy + $i) === TRUE)
    {
    for ($j = 0; $j < 12; $j++)
    {
    $total_eDays += $lmonth[$j];
    }
    }
    else
    {
    for ($j = 0; $j < 12; $j++)
    {
    $total_eDays += $month[$j];
    }
    }
    }
    // Count total no. of days in-terms of month
    for ($i = 0; $i < ($mm - 1); $i++)
    {
    if ($this->is_leap_year($yy) === TRUE)
    {
    $total_eDays += $lmonth[$i];
    }
    else
    {
    $total_eDays += $month[$i];
    }
    }
    // Count total no. of days in-terms of date
    $total_eDays += $dd;
    $i = 0;
    $j = $def_nmm;
    $total_nDays = $def_ndd;
    $m = $def_nmm;
    $y = $def_nyy;
    // Count nepali date from array
    while ($total_eDays != 0)
    {
    $a = $this->_bs[$i][$j];
    $total_nDays++; //count the days
    $day++; //count the days interms of 7 days
    if ($total_nDays > $a)
    {
    $m++;
    $total_nDays = 1;
    $j++;
    }
    if ($day > 7)
    {
    $day = 1;
    }
    if ($m > 12)
    {
    $y++;
    $m = 1;
    }
    if ($j > 12)
    {
    $j = 1;
    $i++;
    }
    $total_eDays--;
    }
    $numDay = $day;
    $this->_nep_date['year'] = $y;
    $this->_nep_date['month'] = $m;
    $this->_nep_date['date'] = $total_nDays;
    $this->_nep_date['day'] = $this->_get_day_of_week($day);
    $this->_nep_date['nmonth'] = $this->_get_nepali_month($m);
    $this->_nep_date['num_day'] = $numDay;
    $this->_nep_date['num_day'] = $numDay;
    return $this->_nep_date;
    }
    }
    /**
    * Currently can only calculate the date between BS 2000-2089
    *
    * @param int $yy
    * @param int $mm
    * @param int $dd
    * @return array
    */
    public function nep_to_eng($yy, $mm, $dd)
    {
    $def_eyy = 1943;
    $def_emm = 4;
    $def_edd = 14 - 1; // initial english date.
    $def_nyy = 2000;
    $def_nmm = 1;
    $def_ndd = 1; // iniital equivalent nepali date.
    $total_eDays = 0;
    $total_nDays = 0;
    $a = 0;
    $day = 4 - 1;
    $m = 0;
    $y = 0;
    $i = 0;
    $k = 0;
    $numDay = 0;
    $month = array(
    0,
    31,
    28,
    31,
    30,
    31,
    30,
    31,
    31,
    30,
    31,
    30,
    31
    );
    $lmonth = array(
    0,
    31,
    29,
    31,
    30,
    31,
    30,
    31,
    31,
    30,
    31,
    30,
    31
    );
    // Check for date range
    $chk = $this->_is_in_range_nep($yy, $mm, $dd);
    if ( $chk !== TRUE)
    {
    die($chk);
    }
    else
    {
    // Count total days in-terms of year
    for ($i = 0; $i < ($yy - $def_nyy); $i++)
    {
    for ($j = 1; $j <= 12; $j++)
    {
    $total_nDays += $this->_bs[$k][$j];
    }
    $k++;
    }
    // Count total days in-terms of month
    for ($j = 1; $j < $mm; $j++)
    {
    $total_nDays += $this->_bs[$k][$j];
    }
    // Count total days in-terms of dat
    $total_nDays += $dd;
    // Calculation of equivalent english date...
    $total_eDays = $def_edd;
    $m = $def_emm;
    $y = $def_eyy;
    while ($total_nDays != 0)
    {
    if ($this->is_leap_year($y))
    {
    $a = $lmonth[$m];
    }
    else
    {
    $a = $month[$m];
    }
    $total_eDays++;
    $day++;
    if ($total_eDays > $a)
    {
    $m++;
    $total_eDays = 1;
    if ($m > 12)
    {
    $y++;
    $m = 1;
    }
    }
    if ($day > 7)
    {
    $day = 1;
    }
    $total_nDays--;
    }
    $numDay = $day;
    $this->_eng_date['year'] = $y;
    $this->_eng_date['month'] = $m;
    $this->_eng_date['date'] = $total_eDays;
    $this->_eng_date['day'] = $this->_get_day_of_week($day);
    $this->_eng_date['nmonth'] = $this->_get_english_month($m);
    $this->_eng_date['num_day'] = $numDay;
    return $this->_eng_date;
    }
    }
    }
    function convertToUnicodeNum($number) {
    $standard_numsets = array("0","1","2","3","4","5","6","7","8","9");
    $devanagari_numsets = array("०","१","२","३","४","५","६","७","८","९");
    return str_replace($standard_numsets, $devanagari_numsets, $number);
    }
    function myNepaliDate($cyear, $cmonth, $cday){
    $cal = new Nepali_Calendar();
    $nepdate = $cal->eng_to_nep($cyear, $cmonth, $cday);
    $year_name = convertToUnicodeNum($nepdate['year']);
    $month_name = $nepdate['nmonth'];
    $date_number = convertToUnicodeNum($nepdate['date']);
    $day_name = $nepdate['day'];
    echo $date_number . " " . $month_name . ", " . $year_name . " " . $day_name;
    }
    function getpost_npdate(){
    $cal = new Nepali_Calendar();
    $post_dayname = get_the_date('d');
    $post_year = get_the_date('Y');
    $post_month = get_the_date( 'm' );
    $post_day = get_the_date( 'j' );
    $npdate = $cal->eng_to_nep($post_year,$post_month,$post_day);
    $ndin = $npdate['day'];
    $nMahina = $npdate['nmonth'];
    $nBaar = convertToUnicodeNum($npdate['date']);
    $nWarsha = convertToUnicodeNum($npdate['year']);
    echo $nMahina . " " . $nBaar . ", " . $nWarsha. ' '.$ndin;
    }
    function todayNpDate(){
    $cal = new Nepali_Calendar();
    $baar = date('j');
    $mahina = date('m');
    $warsha = date('Y');
    $eng_day = date('l');
    $day = convertDayName($eng_day);
    $npdate = $cal->eng_to_nep($warsha, $mahina, $baar);
    $ndin = $npdate['day'];
    $nMahina = $npdate['nmonth'];
    $nBaar = convertToUnicodeNum($npdate['date']);
    $nWarsha = convertToUnicodeNum($npdate['year']);
    echo $ndin." , ".$nMahina . " " . $nBaar . ", " . $nWarsha;
    }
    function convertNos($nos){
    $n = '';
    switch($nos){
    case "0": $n = "०"; break;
    case "1": $n = "१"; break;
    case "2": $n = "२"; break;
    case "3": $n = "३"; break;
    case "4": $n = "४"; break;
    case "5": $n = "५"; break;
    case "6": $n = "६"; break;
    case "7": $n = "७"; break;
    case "8": $n = "८"; break;
    case "9": $n = "९"; break;
    }
    return $n;
    }
    function convertDayName($dayname){
    $n = '';
    switch($nos){
    case "Sunday": $n = "आइतबार"; break;
    case "Monday": $n = "सोमबार"; break;
    case "Tuesday": $n = "मंगलबार"; break;
    case "Wednesday": $n = "बुधबार"; break;
    case "Thursday": $n = "बिहीबार"; break;
    case "Friday": $n = "शुक्रबार"; break;
    case "Saturday": $n = "शनिबार"; break;
    }
    return $dayname;
    }
  2. Include or map the file in functions.php as belows,
    <?php
    include_once('nep_calendar.php');
    view raw functions.php hosted with ❤ by GitHub
  3. Insert the following php code where you want to display Current Nepali date
    <?php if (function_exists('todayNpDate')){
    todayNpDate();
    } ?>

Ashok kuikel

Ashok Kuikel is DevOps Engineer(Cloud Computing and Cyber Security), Entrepreneur working on Socio-Economic Development via Technology

He has been actively contributing as Joint Secretary of Federation of Computer Association of Nepal Kavre Chapter. Beside that, he is an official Global Peace Ambassador for Global Peace Chain, Nepal Chapter and Member of Internet Society, Nepal Chapter.

Above all, he enjoys learning about new trends and technologies and loves to share innovative ideas to contribute for the growth of the industry.

You can follow me on Social Media, GitHub, and via my Blog Channels.

Leave a Reply

Articles and Tutorials

We love writing about WordPress and latest plugins tutorials, WooCommerce stats, and much more.