دریافت تاریخ شمسی ذخیره کردن به صورت میلادی

1 ماه پیش توسط عرفان مهدوی آپدیت شد
آفلاین
user-avatar
bardia ( 22926 تجربه )
3 سال پیش
تخصص : Golang/Laravel

لینک کوتاه اشتراک گذاری

0

سلام
@hesammousavi
من یه دیتاپکر دارم شمسی هست
میخوام زمانی که توی دیتابیس ثبت میشه به صورت میلادی باشه نه شمسی
باید چیکار کنم

آفلاین
user-avatar
سیدعلی موسوی ( 142798 تجربه )
3 سال پیش
تخصص : سی شارپ و پی اچ پی

لینک کوتاه اشتراک گذاری

2

سلام، با پکیچ های تقویم شمسی در لاراول، تبدیل کن!

آفلاین
user-avatar
bardia ( 22926 تجربه )
3 سال پیش
تخصص : Golang/Laravel

لینک کوتاه اشتراک گذاری

1

@juza666
یه نمونه بگید بی زحمت
از کدوم پکیج و به چه صورتی
درواقع من توی وردی از کاربر تاریخ شمسی رو میگیرم بعد میخوام توی دیتابیس به صورت میلادی ذخیره کنه

آفلاین
user-avatar
امیر اردکانی ( 17741 تجربه )
3 سال پیش
تخصص : طراح و برنامه نویس وب

لینک کوتاه اشتراک گذاری

2

با سلام
از پکیج ورتا استفاده کنید , قابلیت تبدیل شمسی به میلادی و میلادی به شمسی رو داره
لینک پکیج

آفلاین
user-avatar
bardia ( 22926 تجربه )
3 سال پیش
تخصص : Golang/Laravel

لینک کوتاه اشتراک گذاری

1

@AmirArdakani

برای نمایش تاریخ به صورت میلادی، از دستور زیر استفاده کنید

return $v->DateTime()->format('Y-m-d H:i:s'); // 2017-05-23 23:21:02
return $v->formatGregorian('Y-m-d H:i:s'); // 2017-05-23 23:21:02

چطور وردیمو بدم بهش- وردی تاریخ شمسی رو بدم بهش که تبدیل کنه به میلادی بزار داخل دیتابیس

آفلاین
user-avatar
امیر اردکانی ( 17741 تجربه )
3 سال پیش
تخصص : طراح و برنامه نویس وب

لینک کوتاه اشتراک گذاری

3

@sajad.kazemi1993
شما اون تاریخی که به صورت شمسی از کاربر دریافت میکنی رو تو دستور زیر مقدار دهی کن

Verta::getGregorian(تاریخ دریافتی از کاربر)

سپس خروجی این دستور رو میتونید تو دیتابیس ذخیره کنید

آفلاین
user-avatar
bardia ( 22926 تجربه )
3 سال پیش
تخصص : Golang/Laravel

لینک کوتاه اشتراک گذاری

1

@AmirArdakani

به صورت زیر نوشتم توی کنترلرstore

 'Expiration_date' =>Verta::getGregorian($request->datex)

اما خطای زیر رو میده

Too few arguments to function Hekmatinasser\Verta\Verta::getGregorian(), 1 passed in
آفلاین
user-avatar
bardia ( 22926 تجربه )
3 سال پیش
تخصص : Golang/Laravel

لینک کوتاه اشتراک گذاری

1

@AmirArdakani
نوع فرمت ورودی من به صورت زیر هست
1397-04-20
بعدش دستور زیر به صورت زیر ورودی و خروجی رو صادر می کنه

return Verta::getGregorian(1394,10,4); // [2015,12,25]

میخوام به جای ویرگول خطه تیره باشه
فک کنم بخاطر همینه که خطا میده
بایدچیکار کنم

آفلاین
user-avatar
سیدعلی موسوی ( 142798 تجربه )
3 سال پیش
تخصص : سی شارپ و پی اچ پی

لینک کوتاه اشتراک گذاری

2

سلام، منظور از ویرگول اینه که یه ارایه میتونی بدی

حالا با استرینگ های لاراول تاریخ رو درست کن مثه کد زیر

str_replace('-', ',', '1397-03-29')
آفلاین
user-avatar
bardia ( 22926 تجربه )
3 سال پیش
تخصص : Golang/Laravel

لینک کوتاه اشتراک گذاری

1

@juza666
@hesammousavi
به صورت زیر نوشتم

'Expiration_date' =>Verta::getGregorian(str_replace(',', '-', $request->datex))

خطای زیر رو داد

Too few arguments to function HekmatinasserVertaVerta::getGregorian(), 1 passed in
آفلاین
user-avatar
bardia ( 22926 تجربه )
3 سال پیش
تخصص : Golang/Laravel

لینک کوتاه اشتراک گذاری

آفلاین
user-avatar
تابش ( 3121 تجربه )
3 سال پیش
تخصص : برنامه نویس ارشد وب

لینک کوتاه اشتراک گذاری

3

به نظر من از morilog jalali یا از jdf استفاده کن
ورتا باگ داره

آفلاین
user-avatar
bardia ( 22926 تجربه )
3 سال پیش
تخصص : Golang/Laravel

لینک کوتاه اشتراک گذاری

1

@tabeshr
میخوام تاریخی که از کاربر میگیره به صورت شمسی هست
وقتی در دیتابیس درج میشه میخوام به صورت میلادی باشه

آفلاین
user-avatar
تابش ( 3121 تجربه )
3 سال پیش
تخصص : برنامه نویس ارشد وب

لینک کوتاه اشتراک گذاری

3

بله کاری نداره از تابع toGregorian
morlilog استفاده کن
https://github.com/morilog/jalali
مثالشم زده قشنگ

آفلاین
user-avatar
bardia ( 22926 تجربه )
3 سال پیش
تخصص : Golang/Laravel

لینک کوتاه اشتراک گذاری

1

@tabeshr
مشکل من اینه که عدد ورودی فارسیه
باید به انگلیسی تبدیل کنم
به صورت زیر نوشتم داخل کنترلر ولی فقط سال رو تبدیل می کنه روز و ماه رو تبدیل نمی کنه

public function store(Request $request){

        request()->validate([
            'matn' => 'required',
            'datex' => 'required'
       ]);

        $persian = ['۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹'];
        $arabic = ['٩', '٨', '٧', '٦', '٥', '٤', '٣', '٢', '١','٠'];
        $num = range(0, 9);
        $convert = str_replace($persian, $num, $request->datex);
        list($year, $month, $day) = explode('-', $convert);

       $user=Post::create([
            'menu_id'=> $request->name,
            'user_id'=>auth()->user()->id,
            'body'=>$request->matn,
            'Expiration_date' =>Verta::getGregorian($year, $month, $day)

       ]);
       session()->flash('message' , 'اطلاعات با موفقیت درج گردید');
       return redirect()->route('article.add');
    }
آفلاین
user-avatar
تابش ( 3121 تجربه )
3 سال پیش
تخصص : برنامه نویس ارشد وب

لینک کوتاه اشتراک گذاری

2

شما باید persioan , arabic را با هم عوض کنید نه persioan , num را

آفلاین
user-avatar
bardia ( 22926 تجربه )
3 سال پیش
تخصص : Golang/Laravel

لینک کوتاه اشتراک گذاری

1

@tabeshr
اون persion فارسی هست اعدادش
اینجا توی این پست به شما انگلیسی نشون میده

آفلاین
user-avatar
امین ( 1234 تجربه )
2 سال پیش
تخصص : سرور کار , گیمر , طراح

لینک کوتاه اشتراک گذاری

1

@Arshavir

چطوری حل کردید مشکل رو الان برای من هم همچین مشکل پیش اومده؟!!

آفلاین
user-avatar
عرفان همتی ( 26675 تجربه )
2 سال پیش
تخصص : Backend Developer

لینک کوتاه اشتراک گذاری

1

@Arshavir
من این مشکل رو به روش زیر تونستم حلش کنم.

چون Datepicker اعدادی فارسی رو تولید میکنه باید اول به اعداد انگلیسی تبدیلش کنیم. (به روش زیر)

public static function convert_numbers($input)
    {
        $persian = array('۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹');
        $english = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
        $string = str_replace($persian, $english, $input);
        return $string;
    }

فانکشن زیر هم تاریخ شمسی رو به میلادی تبدیل میکنه...

public static function jalali_to_gregorian($jy, $jm, $jd, $mod = '')
    {
        if ($jy > 979) {
            $gy = 1600;
            $jy -= 979;
        } else {
            $gy = 621;
        }
        $days = (365 * $jy) + (((int)($jy / 33)) * 8) + ((int)((($jy % 33) + 3) / 4)) + 78 + $jd + (($jm < 7) ? ($jm - 1) * 31 : (($jm - 7) * 30) + 186);
        $gy += 400 * ((int)($days / 146097));
        $days %= 146097;
        if ($days > 36524) {
            $gy += 100 * ((int)(--$days / 36524));
            $days %= 36524;
            if ($days >= 365) $days++;
        }
        $gy += 4 * ((int)(($days) / 1461));
        $days %= 1461;
        $gy += (int)(($days - 1) / 365);
        if ($days > 365) $days = ($days - 1) % 365;
        $gd = $days + 1;
        foreach (array(0, 31, ((($gy % 4 == 0) and ($gy % 100 != 0)) or ($gy % 400 == 0)) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31) as $gm => $v) {
            if ($gd <= $v) break;
            $gd -= $v;
        }
        return ($mod === '') ? array($gy, $gm, $gd) : $gy . $mod . $gm . $mod . $gd;
    }

بعدش به راحتی میتونید به صورت زیر تاریخ شمسی رو به میلادی تبدیل کنید (البته با اعداد انگلیسی)

$gam_date_held = StringController::convert_numbers($request->input('gam_date_held'));
        $persian_date = explode("-", $gam_date_held);
        $year = $persian_date[0];
        $month = $persian_date[1];
        $day = $persian_date[2];

        $main_date = StringController::jalali_to_gregorian($year, $month, $day, '-') . ' ' . $request->input('gam_time_held') . ':' . '00';
آفلاین
user-avatar
miladk313 ( 11330 تجربه )
2 سال پیش
تخصص : برنامه نویس لاراول

لینک کوتاه اشتراک گذاری

2

سلام
پکیج زیر واقعا عالیه من تمام این تبدیل های تاریخ رو با این پکیج انجام میدم
http://morilog.ir/jalali-shamsi-date-for-laravel-5/

createCarbonFromFormat($format, $jalaiTimeString)
$Jalalian = '1394/11/25 15:00:00';

// get instance of \Carbon\Carbon
$carbon = \Morilog\Jalali\CalendarUtils::createCarbonFromFormat('Y/m/d H:i:s', $Jalalian);
آفلاین
user-avatar
Sajjad Arvin ( 8809 تجربه )
1 سال پیش

لینک کوتاه اشتراک گذاری

0

@Arshavir
سلام.مشکل از اونجایی هست که شما داری یه آرگومان از سه آرگومان مورد نیاز متد getGregorian رو بهش میدی. برای اینکه بتونی از این متد استفاده کنی باید سال و ماه و روز رو از هم جدا کنی و توی آرگومان های این متد جایگذاری کنی
getGregorian($year,$month,$day)

برای ارسال پاسخ لازم است، ابتدا وارد سایت شوید.