sarojsardar / laravel-nepali-date
Laravel Nepali Date Converter Package
Package info
github.com/sarojsardar/Laravel-Nepali-Date
pkg:composer/sarojsardar/laravel-nepali-date
Requires
- php: ^8.0|^8.1|^8.2|^8.3|^8.4
- illuminate/support: ^9.0|^10.0|^11.0|^12.0
README
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.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
ЁЯУД License
This package is open-sourced software licensed under the MIT license.
ЁЯСитАНЁЯТ╗ Author
Saroj Sardar
- Email: sarojsardar25@gmail.com
- GitHub: @sarojsardar
ЁЯЩП Acknowledgments
- Thanks to the Laravel community
- Nepali calendar data sources
- Contributors and testers
Made with тЭдя╕П for the Nepali developer community