Skip to content

Examples ​

This section provides practical code examples for common tasks with the Nepali Date Library (PHP).

Quick Navigation ​

CategoryDescription
Basic UsageCreating dates, getting values
FormattingEnglish and Nepali formatting
ConversionAD ↔ BS conversion
ManipulationAdding/subtracting time
ComparisonComparing dates
QuartersWorking with quarters
Fiscal YearFiscal year operations
CalendarBuilding calendars

Basic Usage ​

Create Dates ​

php
use NepaliDateLibrary\NepaliDate;

// Current date
$today = new NepaliDate();

// From year, month (0-indexed), day
$date1 = new NepaliDate(2082, 9, 15); // Magh 15, 2082

// From string
$date2 = new NepaliDate('2082-10-15');

// From a DateTimeImmutable
$date3 = new NepaliDate(new DateTimeImmutable('2026-01-14', new DateTimeZone('UTC')));

// Clone
$date4 = $today->clone();

Get Date Components ​

php
$date = new NepaliDate(2082, 9, 15);

echo $date->getYear(), PHP_EOL; // 2082
echo $date->getMonth(), PHP_EOL; // 9 (Magh)
echo $date->getDate(), PHP_EOL; // 15
echo $date->getDay(), PHP_EOL; // 3 (Wednesday)
echo $date->toString(), PHP_EOL; // '2082/10/15'

Formatting ​

English Format ​

php
$date = new NepaliDate(2082, 9, 15);

echo $date->format('YYYY-MM-DD'), PHP_EOL;    // '2082-10-15'
echo $date->format('YYYY/MM/DD'), PHP_EOL;    // '2082/10/15'
echo $date->format('MMM D, YYYY'), PHP_EOL;   // 'Mag 15, 2082'
echo $date->format('MMMM DD, YYYY'), PHP_EOL; // 'Magh 15, 2082'
echo $date->format('DDDD'), PHP_EOL;          // 'Wednesday'
echo $date->format('DDDD, MMMM DD'), PHP_EOL; // 'Wednesday, Magh 15'

Nepali Format ​

php
$date = new NepaliDate(2082, 9, 15);

echo $date->format('yyyy-mm-dd'), PHP_EOL;    // '२०८२-१०-१५'
echo $date->format('mmmm dd, yyyy'), PHP_EOL; // 'माघ १५, २०८२'
echo $date->format('dddd'), PHP_EOL;          // 'बुधबार'
echo $date->format('dddd, mmmm dd'), PHP_EOL; // 'बुधबार, माघ १५'

Mixed Format ​

php
$date = new NepaliDate(2082, 9, 15);

// English date, Nepali day name
echo $date->format('MMMM DD, YYYY (dddd)'), PHP_EOL;
// 'Magh 15, 2082 (बुधबार)'

// Nepali date, English day name
echo $date->format('mmmm dd, yyyy (DDDD)'), PHP_EOL;
// 'माघ १५, २०८२ (Wednesday)'

Conversion ​

AD to BS ​

php
use function NepaliDateLibrary\ADtoBS;

echo ADtoBS('2026-01-14'), PHP_EOL; // '2082-10-01'
echo ADtoBS('2024-04-14'), PHP_EOL; // '2081-01-01' (New Year)
echo ADtoBS('2025-12-25'), PHP_EOL; // '2082-09-10'

BS to AD ​

php
use function NepaliDateLibrary\BStoAD;

echo BStoAD('2082-10-01'), PHP_EOL; // '2026-01-14'
echo BStoAD('2082-01-01'), PHP_EOL; // '2025-04-14' (New Year)
echo BStoAD('2081-12-30'), PHP_EOL; // '2025-04-13'

Using the NepaliDate Class ​

php
use NepaliDateLibrary\NepaliDate;

// AD to BS
$adDate = new DateTimeImmutable('2026-01-14', new DateTimeZone('UTC'));
$bsDate = new NepaliDate($adDate);
echo $bsDate->format('YYYY-MM-DD'), PHP_EOL; // '2082-10-01'

// BS to AD
$nepaliDate = new NepaliDate('2082-10-01');
$englishDate = $nepaliDate->getEnglishDate();
echo $englishDate->format('Y-m-d'), PHP_EOL; // '2026-01-14'

Manipulation ​

Add Days ​

php
$date = new NepaliDate(2082, 9, 15);

$tomorrow = $date->addDays(1);
echo $tomorrow->format('YYYY-MM-DD'), PHP_EOL; // '2082-10-16'

$nextWeek = $date->addDays(7);
echo $nextWeek->format('YYYY-MM-DD'), PHP_EOL; // '2082-10-22'

$yesterday = $date->addDays(-1);
echo $yesterday->format('YYYY-MM-DD'), PHP_EOL; // '2082-10-14'

Add Months ​

php
$date = new NepaliDate(2082, 9, 15);

$nextMonth = $date->addMonths(1);
echo $nextMonth->format('MMMM YYYY'), PHP_EOL; // 'Falgun 2082'

$threeMonthsAgo = $date->addMonths(-3);
echo $threeMonthsAgo->format('MMMM YYYY'), PHP_EOL; // 'Kartik 2082'

Add Years ​

php
$date = new NepaliDate(2082, 9, 15);

$nextYear = $date->addYears(1);
echo $nextYear->format('YYYY'), PHP_EOL; // '2083'

$fiveYearsAgo = $date->addYears(-5);
echo $fiveYearsAgo->format('YYYY'), PHP_EOL; // '2077'

Comparison ​

Compare Dates ​

php
$date1 = new NepaliDate(2082, 9, 10);
$date2 = new NepaliDate(2082, 9, 20);

var_dump($date1->isBefore($date2)); // true
var_dump($date1->isAfter($date2));  // false
var_dump($date1->isEqual($date2));  // false

$date3 = new NepaliDate(2082, 9, 10);
var_dump($date1->isEqual($date3)); // true

Compare by Unit ​

php
$date1 = new NepaliDate(2082, 9, 10);
$date2 = new NepaliDate(2082, 9, 20);

var_dump($date1->isSame($date2, 'year'));  // true
var_dump($date1->isSame($date2, 'month')); // true
var_dump($date1->isSame($date2, 'day'));   // false

Calculate Difference ​

php
$date1 = new NepaliDate(2082, 0, 1);  // Baisakh 1
$date2 = new NepaliDate(2082, 11, 30); // Chaitra 30

echo $date1->diff($date2, 'day'), PHP_EOL;   // ~365 days
echo $date1->diff($date2, 'month'), PHP_EOL; // 11
echo $date1->diff($date2, 'year'), PHP_EOL;  // 0

Quarters ​

Get Current Quarter ​

php
$date = new NepaliDate(2082, 9, 15);
$quarter = $date->getCurrentQuarter();
echo "Quarter: Q{$quarter}", PHP_EOL; // Q4 (Magh is in Q4)

Get Quarter Dates ​

php
$q1 = NepaliDate::getQuarter(1, 2082);
echo "Q1 Start: " . $q1['start']->format('MMMM DD'), PHP_EOL; // Baisakh 01
echo "Q1 End: " . $q1['end']->format('MMMM DD'), PHP_EOL;     // Asar 30/31

Get All Quarters ​

php
$quarters = NepaliDate::getQuarters(2082);

foreach ($quarters as $key => $value) {
    echo "{$key}: " . $value['start']->format('MMM') . ' - ' . $value['end']->format('MMM YYYY'), PHP_EOL;
}
// Q1: Bai - Asa 2082
// Q2: Shr - Asw 2082
// Q3: Kar - Pou 2082
// Q4: Mag - Cha 2082

Fiscal Year ​

Current Fiscal Year ​

php
$fy = NepaliDate::getCurrentFiscalYear();
echo "Fiscal Year: {$fy}/" . ($fy + 1), PHP_EOL; // 2081/82

Fiscal Quarter ​

php
$date = new NepaliDate();
$fq = $date->getCurrentFiscalYearQuarter();
echo "Fiscal Quarter: FQ{$fq}", PHP_EOL;

Fiscal Year Quarters ​

php
$fyQuarters = NepaliDate::getFiscalYearQuarters(2081);

echo "FY 2081/82:", PHP_EOL;
foreach (['Q1', 'Q2', 'Q3', 'Q4'] as $q) {
    $range = $fyQuarters[$q];
    echo "  F{$q}: " . $range['start']->format('MMM YYYY') . ' - ' . $range['end']->format('MMM YYYY'), PHP_EOL;
}

Calendar ​

Generate Calendar ​

php
$calendar = NepaliDate::getCalendarDays(2082, 9);

echo "Previous month days: ", print_r($calendar['prevMonth']['days'], true);
echo "Current month days: ", print_r($calendar['currentMonth']['days'], true);
echo "Next month days: ", print_r($calendar['nextMonth']['days'], true);

Simple Calendar Display ​

php
use NepaliDateLibrary\Helper\Constants;
use NepaliDateLibrary\NepaliDate;

function printCalendar(int $year, int $month): void
{
    $date = new NepaliDate($year, $month, 1);
    $calendar = NepaliDate::getCalendarDays($year, $month);

    echo PHP_EOL . '  ' . $date->format('MMMM YYYY'), PHP_EOL;
    echo ' ' . implode(' ', Constants::$WEEK_SHORT_EN), PHP_EOL;

    $allDays = [
        ...array_map(fn ($d) => "({$d})", $calendar['prevMonth']['days']),
        ...array_map(fn ($d) => str_pad((string) $d, 3, ' ', STR_PAD_LEFT), $calendar['currentMonth']['days']),
        ...array_map(fn ($d) => "({$d})", $calendar['nextMonth']['days']),
    ];

    foreach (array_chunk($allDays, 7) as $week) {
        echo implode(' ', $week), PHP_EOL;
    }
}

printCalendar(2082, 9); // Magh 2082

Released under the MIT License.