PDA

View Full Version : بدست آوردن تاریخ دیروز از یک تاریخ شمسی



arkia
پنج شنبه 28 دی 1391, 23:21 عصر
سلام. چطور میشه تاریخ دیروز و روز ماقبلش رو از یک تاریخ شمسی بدست آورد؟ یعنی یک روز از تاریخی که توی ورودی میدیم کم کنه . آیا jdf همچین قابلیتی داره؟

MMSHFE
جمعه 29 دی 1391, 00:32 صبح
کافیه با jstrtotime تبدیل به timestamp کنید و به ازای هر روز، 86400 ثانیه از timestamp کم کنید و دوباره با jdate تبدیل به فرمت تاریخ کنید. یا اینکه با jstrftime و عملگرهایی مثل -1 days و... کار کنید که راه اول راحتتره.
موفق باشید.

arkia
جمعه 29 دی 1391, 01:40 صبح
کافیه با jstrtotime تبدیل به timestamp کنید و به ازای هر روز، 86400 ثانیه از timestamp کم کنید و دوباره با jdate تبدیل به فرمت تاریخ کنید. یا اینکه با jstrftime و عملگرهایی مثل -1 days و... کار کنید که راه اول راحتتره.
موفق باشید.

منظورتون ایناس؟


date("Y-m-d", time() - 86400);
date("Y-m-d", strtotime("yesterday"));
date("Y-m-d", strtotime("-1 day"));


من برا تاریخ شمسی میخوام اینا کار میده؟

arkia
جمعه 29 دی 1391, 02:56 صبح
اگه برا این کار بیام تاریخ شمسی ای که تو دیتابیس ذخیره شده رو تبدیل کنم به میلادی بعد یک روز کمش کنم بعد دوباره تبدیل به شمسی کنم کار عاقلانه ایه؟ به نظر خودم لقمه رو دور سرم میچرخونم اینجوری.

rezaonline.net
جمعه 29 دی 1391, 11:08 صبح
از تایم استمپ استفاده کنید .

Unique
جمعه 29 دی 1391, 12:14 عصر
اگه برا این کار بیام تاریخ شمسی ای که تو دیتابیس ذخیره شده رو تبدیل کنم به میلادی بعد یک روز کمش کنم بعد دوباره تبدیل به شمسی کنم کار عاقلانه ایه؟ به نظر خودم لقمه رو دور سرم میچرخونم اینجوری.

کار عاقلانه ای هست اگه دارین از کاربر تاریخ را فارسی میگیرین اما اصلا کار عاقلانه ای نیست اگه تاریخ ها را به فارسی توی database ذخیره میکنید ! تاریخ ها را به میلادی یا با فرمت timestamp ذخیره کنید تا براحتی بتونید روش عملیات انجام بدین.

MostafaEs3
جمعه 29 دی 1391, 12:59 عصر
کافیه با jstrtotime تبدیل به timestamp کنید و به ازای هر روز، 86400 ثانیه از timestamp کم کنید و دوباره با jdate تبدیل به فرمت تاریخ کنید. یا اینکه با jstrftime و عملگرهایی مثل -1 days و... کار کنید که راه اول راحتتره.
موفق باشید.

آقای شهرکی تابع jstrtotime نداریما ؟!! مطمئنید ؟

arkia
جمعه 29 دی 1391, 13:47 عصر
کار عاقلانه ای هست اگه دارین از کاربر تاریخ را فارسی میگیرین اما اصلا کار عاقلانه ای نیست اگه تاریخ ها را به فارسی توی database ذخیره میکنید ! تاریخ ها را به میلادی یا با فرمت timestamp ذخیره کنید تا براحتی بتونید روش عملیات انجام بدین.

من این کد رو برای بدست آوردن آمار تاریخ های 7 روز اخیر میخوام استفاده کنم که اسکریپت شمارنده ش رو آقای شهرکی زحمتشو کشیده بودند و تاریخ ها رو به صورت شمسی توی دیتابیس ذخیره میکنه.

MMSHFE
جمعه 29 دی 1391, 13:52 عصر
آقای شهرکی تابع jstrtotime نداریما ؟!! مطمئنید ؟
ببخشید من یک نسخه برای خودم توسعه داده بودم که توش این تابع رو اضافه کرده بودم. یادم نبود که توی نسخه اصلی نیست. درهرحال با jmktime هم میشه به هدف مشابه رسید. کافیه بجای پارامتر day یک روز عقب تر بگذاریم یا اینکه همون تاریخ رو بگذاریم و هرچی خروجی بهمون داد، به ازای هر روز 86400 ثانیه ازش کم کنیم.

MMSHFE
جمعه 29 دی 1391, 13:56 عصر
اگه توی دیتابیس تاریخ شمسی رو بصورت 1391/10/29 ذخیره کردین، کد زیر به شما تاریخ هر تعداد روز قبلتر که بخواین رو میده:


<?php
function JalaliAgo($jalaliDate, $beforeDays) {
require_once 'jdf.php';
list($y, $m, $d) = explode('/', $jalaliDate);
$ts = jmktime(0, 0, 0, $m, $d, $y);
for($i = 0; $i < $beforeDays; $i++) {
$ts -= 86400;
}
return jdate('Y/m/d', $ts);
}
?>

MostafaEs3
جمعه 29 دی 1391, 13:56 عصر
ببخشید من یک نسخه برای خودم توسعه داده بودم که توش این تابع رو اضافه کرده بودم. یادم نبود که توی نسخه اصلی نیست. درهرحال با jmktime هم میشه به هدف مشابه رسید. کافیه
بجای پارامتر day یک روز عقب تر بگذاریم یا اینکه همون تاریخ رو بگذاریم و هرچی خروجی بهمون داد، به ازای هر روز 86400 ثانیه ازش کم کنیم.

یعنی شما یک تابع زدید که ساختارهای مختلف تاریخ شمسی رو شناسایی کنه و (گمونم) پارامتر ها رو توی تابع jmktime قرار بده !! خیلی جالبه آقای شهرکی :لبخند: این دقیقا چیزی هست که من برای تبدیل تاریخ توی فید خبرگزاری فارس نیاز داشتم ! لامصب اومده توی Rss تاریخ شمسی گذاشته !! :عصبانی++:

MMSHFE
جمعه 29 دی 1391, 13:59 عصر
یک راه ساده تر هم هست:
با jalali_to_gregorian شمسی رو به میلادی تبدیل کنید، بعدش از strtotime معمولی استفاده کنید، بعد دوباره با gregorian_to_jalali میلادی رو به شمسی برگردونید.
موفق باشید.

arkia
جمعه 29 دی 1391, 15:11 عصر
ممنون دیگه با همون تابع حل شد. فک کنم تابع بهتر باشه

weldiran
جمعه 24 فروردین 1397, 14:54 عصر
اگه توی دیتابیس تاریخ شمسی رو بصورت 1391/10/29 ذخیره کردین، کد زیر به شما تاریخ هر تعداد روز قبلتر که بخواین رو میده:


<?php
function JalaliAgo($jalaliDate, $beforeDays) {
require_once 'jdf.php';
list($y, $m, $d) = explode('/', $jalaliDate);
$ts = jmktime(0, 0, 0, $m, $d, $y);
for($i = 0; $i < $beforeDays; $i++) {
$ts -= 86400;
}
return jdate('Y/m/d', $ts);
}
?>


فوق العاده ممنونم. عالی بود. مرسیییییییییییییییییی