PHP code example of dev1191 / laravel-bs-eloquent

1. Go to this page and download the library: Download dev1191/laravel-bs-eloquent library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

dev1191 / laravel-bs-eloquent example snippets


return [
    /*
     * Serialization format for API / JSON:
     * - 'dual':   ['ad' => '2024-04-14', 'bs' => '2081-01-01']
     * - 'bs':     '2081-01-01'
     * - 'ad':     '2024-04-14'
     * - 'object': ['bs_year' => 2081, 'bs_month' => 1, 'fiscal_year' => '2080/81', ...]
     */
    'serialization' => env('BS_DATE_SERIALIZATION', 'dual'),

    'default_format' => 'Y-m-d',
    'devanagari' => false,
];

use Illuminate\Database\Eloquent\Model;
use Dev1191\BikramSambat\Casts\AsBikramSambat;
use Dev1191\BikramSambat\Concerns\HasBikramSambatScopes;

class Post extends Model
{
    use HasBikramSambatScopes;

    protected $casts = [
        'published_at' => AsBikramSambat::class,
    ];
}

// You can assign a BS string, DateTime, Carbon, or BsDate instance:
$post = Post::create([
    'title' => 'Sample Post',
    'published_at' => '2081-01-01',
]);

// In the database table, it's stored as Gregorian '2024-04-14' (preserves indexes!)

$post->published_at->toBsString(); // "2081-01-01"
$post->published_at->toAdString(); // "2024-04-14"
$post->published_at->getMonthName(); // "Baisakh"
$post->published_at->getMonthName(nepali: true); // "बैशाख"
$post->published_at->fiscalYear(); // "2080/81"
$post->published_at->fiscalQuarter(); // 4
$post->published_at->format('Y-m-d', inDevanagari: true); // "२०८१-०१-०१"

// Exact date match
Post::whereBs('published_at', '2081-01-01')->get();

// All posts in Baisakh 2081
Post::whereBsMonth('published_at', 2081, 1)->get();

// All posts in year 2081 BS
Post::whereBsYear('published_at', 2081)->get();

// Date range
Post::whereBsBetween('published_at', '2081-01-01', '2081-01-15')->get();

// Fiscal Year (Aarthik Barsha)
Post::whereBsFiscalYear('published_at', '2081/82')->get();

// Fiscal Quarter (Q1: Shrawan-Ashwin, Q2: Kartik-Poush, Q3: Magh-Chaitra, Q4: Baisakh-Ashadh)
Post::whereBsQuarter('published_at', 2081, 1)->get();

use Illuminate\Foundation\Http\FormRequest;
use Dev1191\BikramSambat\Rules\BsDate;
use Dev1191\BikramSambat\Rules\BsAfter;
use Dev1191\BikramSambat\Rules\BsBefore;
use Dev1191\BikramSambat\Rules\BsFiscalYear;

class StoreInvoiceRequest extends FormRequest
{
    public function rules(): array
    {
        return [
            // Using string rules:
            'invoice_date' => ['

use Dev1191\BikramSambat\Support\BsDate;

$date = BsDate::parse('2081-01-15');

// Days
$date->addBsDays(5);    // 2081-01-20
$date->subBsDays(2);    // 2081-01-13

// Months (with automatic month-length day clamping)
$date->addBsMonths(2);  // 2081-03-15
$date->subBsMonths(1);  // 2080-12-15

// Years
$date->addBsYears(1);   // 2082-01-15
$date->subBsYears(2);   // 2079-01-15

$date = BsDate::parse('2081-04-15');

// Month Boundaries
$date->startOfBsMonth();      // 2081-04-01
$date->endOfBsMonth();        // 2081-04-31 (or 32 depending on astronomical calendar)

// Year Boundaries
$date->startOfBsYear();       // 2081-01-01
$date->endOfBsYear();         // 2081-12-30

// Nepal Fiscal Year Boundaries (Shrawan 1 to Ashadh end)
$date->startOfBsFiscalYear(); // 2081-04-01
$date->endOfBsFiscalYear();   // 2082-03-31

// Fiscal Quarter Boundaries
$date->startOfBsQuarter();    // 2081-04-01 (Q1 start)
$date->endOfBsQuarter();      // 2081-06-31 (Q1 end)

$date = BsDate::today()->subDays(3);

// In Nepali (natural language with Devanagari digits)
$date->diffForHumans(locale: 'np'); // "३ दिन अगाडि"

// In English
$date->diffForHumans(locale: 'en'); // "3 days ago"

$future = BsDate::today()->addBsMonths(2);
$future->diffForHumans(locale: 'np'); // "२ महिना पछि"
$future->diffForHumans(locale: 'en'); // "in 2 months"

// Just now
BsDate::now()->diffForHumans(locale: 'np'); // "भर्खरै"
BsDate::now()->diffForHumans(locale: 'en'); // "just now"

$date = BsDate::create(2081, 1, 1);

$date->format('l, F j, Y');                        // "Sunday, Baisakh 1, 2081"
$date->format('l, F j, Y', inDevanagari: true);    // "आइतबार, बैशाख १, २०८१"
$date->format('Y/m/d (x Q)');                      // "2081/01/01 (2080/81 4)"

$date->isToday();
$date->isYesterday();
$date->isTomorrow();
$date->isPast();
$date->isFuture();
$date->isCurrentMonth();
$date->isCurrentYear();
$date->isSameMonth('2081-01-30');
$date->isSameYear('2081-08-10');
bash
php artisan bs:convert 2081-01-01