sarojsardar/laravel-nepali-date

Laravel Nepali Date Converter Package

Maintainers

Package info

github.com/sarojsardar/Laravel-Nepali-Date

pkg:composer/sarojsardar/laravel-nepali-date

Statistics

Installs: 1

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.1 2026-01-22 16:21 UTC

This package is auto-updated.

Last update: 2026-02-23 12:30:53 UTC


README

Latest Version PHP Version Laravel Version License

A comprehensive Laravel package for converting English (Gregorian) dates to Nepali (Bikram Sambat) dates with full localization support.

ЁЯМЯ Features

  • тЬЕ Accurate Date Conversion - English to Nepali date conversion
  • тЬЕ Extended Year Support - Supports years 2000-2100 BS (1943-2043 AD)
  • тЬЕ Multiple Date Formats - Flexible formatting options
  • тЬЕ Dual Numeral System - Nepali (рджреЗрд╡рдирд╛рдЧрд░реА) and English numerals
  • тЬЕ Localized Month Names - Both Nepali and English month names
  • тЬЕ Day Names - Full day names in Nepali
  • тЬЕ Timezone Support - Asia/Kathmandu timezone
  • тЬЕ Error Handling - Comprehensive validation and error handling
  • тЬЕ Laravel Integration - Facade, Service Provider, and Helper functions
  • тЬЕ Modern PHP - PHP 8.0+ with strict typing
  • тЬЕ Laravel Compatibility - Laravel 9, 10, 11, 12 support

ЁЯУж Installation

Install the package via Composer:

composer require sarojsardar/laravel-nepali-date

The package will automatically register its service provider and facade.

ЁЯЪА Quick Start

Basic Usage

// Convert today's date to Nepali
echo toNepaliDate(now()->format('Y-m-d')); 
// Output: реирежреорез-режрео-резрел

// Convert specific date
echo toNepaliDate('2024-12-01');
// Output: реирежреорез-режрео-резрел

ЁЯУЦ Usage Guide

Helper Functions

toNepaliDate()

Convert English date to Nepali date with custom formatting:

// Basic conversion
echo toNepaliDate('2024-01-15'); 
// Output: реирежреореж-резреж-режрез

// Custom format with month name
echo toNepaliDate('2024-01-15', 'Y F d'); 
// Output: реирежреореж рдкреБрд╖ режрез

// With day name
echo toNepaliDate('2024-01-15', 'Y F d, l'); 
// Output: реирежреореж рдкреБрд╖ режрез, рд╕реЛрдорд╡рд╛рд░

// English numerals
echo toNepaliDate('2024-01-15', 'Y-m-d', false); 
// Output: 2080-10-01

nepaliToday()

Get today's date in Nepali:

echo nepaliToday(); 
// Output: реирежреорез-режрео-резрел

echo nepaliToday('Y F d, l'); 
// Output: реирежреорез рдХрд╛рд░реНрддрд┐рдХ резрел, рдЖрдЗрддрд╡рд╛рд░

nepaliDateArray()

Get Nepali date as an array:

$date = nepaliDateArray('2024-01-15');
/*
Output:
[
    'year' => 2080,
    'month' => 10,
    'day' => 1,
    'month_name_nepali' => 'рдкреБрд╖',
    'month_name_english' => 'Poush',
    'day_name' => 'рд╕реЛрдорд╡рд╛рд░'
]
*/

Class Methods

use SarojSardar\LaravelNepaliDate\NepaliDate;

// Convert date
$nepaliDate = NepaliDate::convertToNepali('2024-01-15');

// Format date
echo NepaliDate::format('2024-01-15', 'Y F d l');
// Output: реирежреореж рдкреБрд╖ режрез рд╕реЛрдорд╡рд╛рд░

// Today's date
echo NepaliDate::today('Y-m-d');
// Output: реирежреорез-режрео-резрел

// Check if year is supported
if (NepaliDate::isValidNepaliYear(2080)) {
    echo "Year 2080 is supported";
}

// Get supported year range
$range = NepaliDate::getSupportedYearRange();
// Output: ['min' => 2000, 'max' => 2100]

Facade Usage

use SarojSardar\LaravelNepaliDate\Facades\NepaliDate;

// All class methods available through facade
echo NepaliDate::format('2024-01-15', 'Y F d');
echo NepaliDate::today();
$range = NepaliDate::getSupportedYearRange();

Blade Templates

{{-- In your Blade templates --}}
<p>Date: {{ toNepaliDate($post->created_at->format('Y-m-d'), 'Y F d') }}</p>
<p>Today: {{ nepaliToday('Y F d, l') }}</p>

{{-- With calendar icon --}}
<span>
    <i class="fas fa-calendar-alt"></i>
    {{ toNepaliDate($news->published_at->format('Y-m-d')) }}
</span>

ЁЯОи Format Options

Format Description Example Output
Y 4-digit year реирежреореж
m Month (01-12) резреж
d Day (01-32) режрез
F Full month name (Nepali) рдкреБрд╖
M Full month name (English) Poush
l Day name (Nepali) рд╕реЛрдорд╡рд╛рд░

Format Examples

$date = '2024-01-15';

echo toNepaliDate($date, 'Y-m-d');        // реирежреореж-резреж-режрез
echo toNepaliDate($date, 'Y F d');        // реирежреореж рдкреБрд╖ режрез
echo toNepaliDate($date, 'Y M d');        // реирежреореж Poush режрез
echo toNepaliDate($date, 'd F Y');        // режрез рдкреБрд╖ реирежреореж
echo toNepaliDate($date, 'l, d F Y');     // рд╕реЛрдорд╡рд╛рд░, режрез рдкреБрд╖ реирежреореж
echo toNepaliDate($date, 'Y/m/d');        // реирежреореж/резреж/режрез

ЁЯМН Localization

Nepali Months

  • рд╡реИрд╢рд╛рдЦ (Baisakh)
  • рдЬреЗрда (Jestha)
  • рдЕрд╕рд╛рд░ (Ashar)
  • рд╕рд╛рдЙрди (Shrawan)
  • рднрджреМ (Bhadra)
  • рдЕрд╕реЛрдЬ (Ashoj)
  • рдХрд╛рд░реНрддрд┐рдХ (Kartik)
  • рдордВрд╕рд┐рд░ (Mangsir)
  • рдкреБрд╖ (Poush)
  • рдорд╛рдШ (Magh)
  • рдлрд╛рдЧреБрди (Falgun)
  • рдЪреИрдд (Chaitra)

Nepali Days

  • рдЖрдЗрддрд╡рд╛рд░ (Sunday)
  • рд╕реЛрдорд╡рд╛рд░ (Monday)
  • рдордЩреНрдЧрд▓рд╡рд╛рд░ (Tuesday)
  • рдмреБрдзрд╡рд╛рд░ (Wednesday)
  • рдмрд┐рд╣рд┐рд╡рд╛рд░ (Thursday)
  • рд╢реБрдХреНрд░рд╡рд╛рд░ (Friday)
  • рд╢рдирд┐рд╡рд╛рд░ (Saturday)

тЪая╕П Error Handling

The package throws InvalidArgumentException for:

try {
    echo toNepaliDate('invalid-date');
} catch (InvalidArgumentException $e) {
    echo "Error: " . $e->getMessage();
}

// Common error scenarios:
// - Invalid date format: "Invalid date format: invalid-date"
// - Date out of range: "Date out of supported range"

ЁЯУЕ Supported Date Range

  • Nepali Years: 2000 BS - 2100 BS
  • English Years: 1943 AD - 2043 AD
  • Reference Date: 1943-04-14 AD = 2000-01-01 BS

ЁЯФз Advanced Usage

Custom Service Provider

If you need to customize the package behavior:

// In your AppServiceProvider
public function boot()
{
    // Custom logic here
}

Configuration

The package works out of the box with sensible defaults:

  • Timezone: Asia/Kathmandu
  • Default format: Y-m-d
  • Nepali numerals: Enabled by default

ЁЯзк Testing

// Test basic conversion
$result = toNepaliDate('2024-01-15');
assert($result === 'реирежреореж-резреж-режрез');

// Test format options
$result = toNepaliDate('2024-01-15', 'Y F d');
assert($result === 'реирежреореж рдкреБрд╖ режрез');

// Test English numerals
$result = toNepaliDate('2024-01-15', 'Y-m-d', false);
assert($result === '2080-10-01');

ЁЯдЭ Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

ЁЯУД License

This package is open-sourced software licensed under the MIT license.

ЁЯСитАНЁЯТ╗ Author

Saroj Sardar

ЁЯЩП Acknowledgments

  • Thanks to the Laravel community
  • Nepali calendar data sources
  • Contributors and testers

Made with тЭдя╕П for the Nepali developer community