PDA

View Full Version : سوال: کسر دو تاریخ شمسی



fahime.l
چهارشنبه 22 مرداد 1393, 10:51 صبح
سلام
چگونه میتوان فاصله زمانی بین دو تاریخ را محاسبه کرد؟
با تشکر

Mohammadsgh
چهارشنبه 22 مرداد 1393, 11:11 صبح
با این تابع:لبخندساده:فقط باید با jdf استفاده کنید:لبخندساده:


function G2J($date)
{
include_once 'jdf.php';
// 2014-03-31 12:29:31
$d = explode(' ', $date); // d[0] = 2014-03-31 , d[1] = 12:29:31
$d_date = explode('-', $d[0]);// d_date[0] = 2014 , d_date[1] = 03 ....
$d_time = explode(':', $d[1]);

$year = $d_date[0];
$month = $d_date[1];
$day = $d_date[2];

$hour = $d_time[0];
$minute = $d_time[1];
$second = $d_time[2];

$jd = gregorian_to_jalali($year, $month, $day);
if($jd[1] <= 6)
$timestamp = gmmktime($hour, $minute, $second, $month, $day, $year) - 16200;
else
$timestamp = gmmktime($hour, $minute, $second, $month, $day, $year) - 12600;

return jdate('Y-m-d H:i:s', $timestamp);
}

fahime.l
چهارشنبه 22 مرداد 1393, 12:21 عصر
متشکرم
منظورم تفاضل دو تاریخ شمسی از هم هست

Mohammadsgh
چهارشنبه 22 مرداد 1393, 12:31 عصر
میشه بیشتر توضیح بدید؟

mojtaba.7230
چهارشنبه 22 مرداد 1393, 12:52 عصر
اول تاریخ شمسی به تاریخ میلادی تبدیل کنید بعد اختلاف دو تارخ محاسبه کنید... این روشی هست که من استفاده میکنم که اختلاف تاریخ 18 تا امروز محاسبه میکنه...
امیدوارم کمکتون کنه..


$old_time_array = jalali_to_gregorian( '1393' , '5' , '18');
$old_time = $old_time_array[0].'-'.$old_time_array[1].'-'.$old_time_array[2];
$now_time = new DateTime( date('Y-m-d') );
$old_time = new DateTime( $old_time );
$interval = $now_time->diff( $old_time );
$time = $interval->format('%a ');
echo $time;

fahime.l
دوشنبه 27 مرداد 1393, 10:06 صبح
با تشکر از راهنمایی مفیدتون

fahime.l
دوشنبه 27 مرداد 1393, 10:07 صبح
منظورم محاسبه تعداد روز ها بین دو تاریخ بود
متشکرم

php_programmer021
دوشنبه 27 مرداد 1393, 12:31 عصر
با سلام
به نظر من هم اگه دوستان یکی لطف کنه این موضوع رو کامل و با مثال عملی توضیح بده خیلی بهتره که چطور تعداد روزهای شمسی رو از هم کسر کنیم .
با تشکر

Unique
دوشنبه 27 مرداد 1393, 12:41 عصر
ببینین دوستان توضیح دادند ! اصلا موضوع پیچیده ای نیست ! شما مجبورین دو تاریخ شمسی را با jdf به میلادی تبدیل کنین ! بعدش این تاریخ میلادی ها را با strtotime به timestamp تبدیل کنید ! بعدش این دو تا timestamp را از هم کم کنید و نتیجه را به 24*60*60 تقسیم کنید ! اینطوری تعداد روز های اختلاف به دست میاد ! حالا یکی هم از کلاس DateTime استفاده میکنه که از PHP 5.2 موجوده و اختلاف را به دست میاره اما همون روش اول زاحت جواب میده.

شما بهتره بگین مشکلتون کجاست ؟

php_programmer021
دوشنبه 27 مرداد 1393, 13:55 عصر
راستش من می خوام با استفاده از دیتا پیکر کاربر تاریخ شمسی شروع یه پروژه رو و تاریخ پایان اون پروژه رو انتخاب کنه بعد اینا رو وارد دیتابیس کنم و بعد از هم کسر کنم و نشون بدم که چند روز تا پایان پروژه وقت داره؟
من تایم استمپ رو وارد دیتابیس می کنم و با استفاده از Jdf تاریخ شمسی اونو نمایش می دم تا اینجا مشکلی نیست؟
مشکل من اینه که وقتی کاربر تاریخ شمسی رو با دیتا پیکر مثلا91/9/19 انتخاب می کنه چه جوری اینو به تایم استمپ تبدیل کنم خب مسلما بعدش هم مقدار اونو وارد دیتابیس می کنم و ادامه داستان...
راستش با مثال عملی جواب بدید ممنون می شم.

مهرداد سیف زاده
دوشنبه 27 مرداد 1393, 14:15 عصر
شما از date picker فارسی استفاده میکنید یا اصلی؟ هر دو شون یه سری امکانات برای گرفتن unix_time‌دارن. ار اونجا که من فک کنم شما دارید از date picker فارسی استفاده مکیکنید راهنمایی مکینم تا بدون نیاز به php با همون js بتونی مقدار unix_time رو بگیری
کدهای زیر یک کانفیگ ساده date picker هست که بعد از انتخاب هر تاریخی معال unix_time اون رو میده


$('.date').datepicker({
changeMonth: true,
changeYear: true,
dateFormat: 'yy/mm/dd',
yearRange: "1390:1400",
onSelect: function(dateStr, inst) {


var date = selectedJalaliDate.getGregorianDate();
var unixtime = unixTime(date);
console.log(unixtime);

}
});

multi-site
یک شنبه 24 خرداد 1394, 18:04 عصر
سلام من میخام از تاریخ فعلی 7 روز کسر نمایم میتونید سورس این رو هم بهم بدین؟

barnamenevis2016
یک شنبه 24 خرداد 1394, 19:30 عصر
چیزی که من به ذهنم رسید....می تونید از روش زیر تاریخ یک هفته پیش میلادی به ساعت تهران رو پیدا کنید...و بعد خواستید به شمسی تبدیلش کنید:

date_default_timezone_set("Asia/Tehran");
$today = date('Y-m-d H:i:s', strtotime('-07 days'));
echo $today;