Skip to content

Pasoonate is a PHP library that includes date time methods and calendars.

License

Notifications You must be signed in to change notification settings

pasoonate/pasoonate-php

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

98 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ“… PHP & Laravel Calendar - Pasoonate

Pasoonate is a powerful library that provides advanced date-time methods and supports multiple calendars! ๐Ÿš€


๐Ÿ›  Running Tests

composer install
./vendor/bin/phpunit

๐Ÿ“ฅ Installation (via Composer)

composer require pasoonate/pasoonate-php

๐ŸŽฏ Usage

use Pasoonate\Pasoonate;

function pasoonate(): CalendarManager
{
    return Pasoonate::make();
}

// Set timestamp ๐Ÿ“Œ
$date = pasoonate()->setTimestamp(1333857600)->jalali()->format('yyyy-MM-dd');

// Convert Jalali to Gregorian ๐ŸŒ
$datetime = pasoonate()->jalali('1398/02/01 20:00:00')->gregorian()->getDatetime();

// Get today's date in different calendars ๐Ÿ“†
$date = pasoonate()->jalali()->format('yyyy-MM-dd'); // 1403-10-29 ๐Ÿท๏ธ
$date = pasoonate()->gregorian()->format('yyyy-MM-dd'); // 2025-01-18 ๐Ÿ“…
$date = pasoonate()->islamic()->format('yyyy-MM-dd'); // 1446-07-18 ๐ŸŒ™
$date = pasoonate()->shia()->format('yyyy-MM-dd'); // 1446-07-17 โœจ

// Date conversion ๐Ÿ”„
$date = pasoonate()->jalali()->addDay(2)->gregorian()->format('yyyy-MM-dd');

// Parse and format dates ๐Ÿ“–
pasoonate()->jalali()->parse('yyyy-MM-dd', '1403-10-10')->addDay(3)->format('yyyy-MM-dd'); //1403-10-13

๐ŸŒ Supported Calendars

  • ๐Ÿ“… Gregorian
  • ๐Ÿ‡ฎ๐Ÿ‡ท Jalali
  • ๐Ÿ•Œ Islamic
  • โšซ Shia

๐Ÿ“Œ Commonly Used Date Functions in Projects

โœ… Get Today's Date

$today = pasoonate()->jalali()->format('Y/m/d');

๐Ÿ”„ Convert Jalali to Gregorian

$gregorianDate = pasoonate()->jalali('1403/10/10')->gregorian()->format('Y-m-d');

๐Ÿ” Convert Gregorian to Jalali

$jalaliDate = pasoonate()->gregorian('2025-01-18')->jalali()->format('Y/m/d');

โณ Get Start and End of the Month

$startOfMonth = pasoonate()->jalali()->startOfMonth()->format('Y/m/d');
$endOfMonth = pasoonate()->jalali()->endOfMonth()->format('Y/m/d');

๐Ÿ•ฐ๏ธ Get Start and End of the Year

$startOfYear = pasoonate()->jalali()->startOfYear()->format('Y/m/d');
$endOfYear = pasoonate()->jalali()->endOfYear()->format('Y/m/d');

๐Ÿ“† Check Leap Year

$isLeap = pasoonate()->jalali()->isLeapYear(); // Returns true or false

๐Ÿ—“๏ธ Get Day of the Week

$dayOfWeek = pasoonate()->jalali()->dayOfWeek(); // 0 = Saturday, 6 = Friday

๐Ÿ“… Get Week Number of the Year

$weekNumber = pasoonate()->jalali()->weekOfYear();

๐Ÿ”‘ Basic Methods

  • getTimestamp() ๐Ÿ•ฐ๏ธ
  • getTimezoneOffset() ๐ŸŒŽ
  • getDatetime() โณ
  • getDate() ๐Ÿ“†
  • getTime() โฐ
  • getYear() ๐ŸŽฏ
  • getMonth() ๐Ÿ“…
  • getDay() ๐Ÿท๏ธ
  • getHour() โณ
  • getMinute() โฒ๏ธ
  • getSecond() ๐Ÿ•
  • setTimestamp($timestampAsSeconds) ๐Ÿ”„
  • setTimezoneOffset($offsetAsMinutes) ๐Ÿ๏ธ
  • setDatetime($year, $month, $day, $hour, $minute, $second) ๐Ÿ—๏ธ
  • setDate($year, $month, $day)
  • setTime($hour, $minute, $second)
  • setYear($year)
  • setMonth($month)
  • setDay($day)
  • setHour($hour)
  • setMinute($minute)
  • setSecond($second)
  • setUTCDatetime($year, $month, $day, $hour, $minute, $second)
  • setUTCDate($year, $month, $day)
  • setUTCTime($hour, $minute, $second)
  • setUTCYear($year)
  • setUTCMonth($month)
  • setUTCDay($day)
  • setUTCHour($hour)
  • setUTCMinute($minute)
  • setUTCSecond($second)
  • dayOfWeek() (from 0 for Saturday to 6 for Friday)
  • dayOfYear()
  • weekOfMonth()
  • weekOfYear()

โž• Addition & โž– Subtraction Methods

๐Ÿ“… Add Year

echo $today->jalali('1399/01/15 11:22:00')->addYear(1)->format('Y/m/d H:i:s');
// ๐Ÿ—“๏ธ 1400/01/15 11:22:00

๐Ÿ“† Add Month

echo $today->jalali()->addMonth(1)->format('Y/m/d H:i:s');
// ๐Ÿ—“๏ธ 1400/02/15 11:22:00

๐Ÿ“… Add Day

echo $today->jalali()->addDay(3)->format('Y/m/d H:i:s');
// ๐Ÿ—“๏ธ 1400/02/18 11:22:00

โณ Add Hour

echo $today->jalali()->addHour(4)->format('Y/m/d H:i:s');
// โณ 1400/02/18 15:22:00

โฒ๏ธ Add Minute

echo $today->jalali()->addMinute(2)->format('Y/m/d H:i:s');
// โฒ๏ธ 1400/02/18 15:24:00

โฐ Add Second

echo $today->jalali()->addSecond(35)->format('Y/m/d H:i:s');
// โฐ 1400/02/18 15:24:35

๐Ÿ“… Subtract Year

echo $today->jalali()->subYear(1)->format('Y/m/d H:i:s');
// ๐Ÿ“… 1399/02/18 15:24:35

๐Ÿ“† Subtract Month

echo $today->jalali()->subMonth(1)->format('Y/m/d H:i:s');
// ๐Ÿ“† 1399/01/18 15:24:35

๐Ÿ—“๏ธ Subtract Day

echo $today->jalali()->subDay(3)->format('Y/m/d H:i:s');
// ๐Ÿ—“๏ธ 1399/01/15 15:24:35

... (and many more!)


๐Ÿš€ Pasoonate makes date handling in PHP and Laravel super easy! ๐Ÿ”ฅ

๐Ÿ’ก Give it a โญ on GitHub if you find it useful! ๐ŸŒŸ