PDA

View Full Version : کار با strtotime



Tarragon
چهارشنبه 28 خرداد 1393, 15:37 عصر
با سلام
می خوام با strtotime زمان (time stamp) یه ساعت خاص دقیقا مثل سومین یا چهارمین روز از این هفته ساعت ۸:۱۵ دقیقه رو بدست بیارم.
متغیرهایی که دارم :

$timeweek = 3;//چندمین رو از هفته
$time = "22:17";//ساعت چند؟!
پیشاپیش از جواب مفیدتون ممنونم.

aalmair
چهارشنبه 28 خرداد 1393, 21:10 عصر
سوالتو خوب متوجه نشدم منظورت اینه


echo strtotime("+3 days 22 hours 17 minutes") ;

Tarragon
چهارشنبه 28 خرداد 1393, 22:30 عصر
خیر منظورم اینه که ‍پنجشنبه همین هفته ساعت 8:30 timestampش چنده؟

hamedarian2009
چهارشنبه 28 خرداد 1393, 22:48 عصر
خیر منظورم اینه که ‍پنجشنبه همین هفته ساعت 8:30 timestampش چنده؟

منظورت اینه :

$date = strtotime("next Thursday 8:15");
echo date("Y-m-d H:i", $date);

Tarragon
پنج شنبه 29 خرداد 1393, 12:03 عصر
با سلام
این خیلی نزدیکه اما مسءله اینه که اگر امروز پنجشنبه باشه و بخوام ۳شنبه رو پیدا کنم چی؟
می خوام تو همین هفته نه هفته آینده و نه هفته گذشته.
در ضمن من ۱شنبه و ۲ شنبه ذخیره کردم.($time_week = 1; یه عدد ۱ تا ۷)‌ بخوام تبدیل کنم به هفته لاتین فرق داره یا یکیه؟

MMSHFE
پنج شنبه 29 خرداد 1393, 13:42 عصر
نیازی به strtotime نیست. این کد رو ببینید:

function Timestamp($weekday, $hour, $minute, $second = 0) {
date_default_timezone_set('Asia/Tehran');
// Saturday = 1
// Sunday = 2
// Monday = 3
// Tuesday = 4
// Wednesday = 5
// Thursday = 6
// Friday = 7
$now = time();
list($w, $d, $m, $y) = explode('-', date('w-j-n-Y', $now));
$w++; // To match Latin weekdays with Lalai ones
$ts = mktime($hour, $minute, $second, $m, $d, $y);
if($w < $weekday) {
while($w < $weekday) {
$ts += 86400;
$w++;
}
}
else {
while($w > $weekday) {
$ts -= 86400;
$w--;
}
}
return $ts;
}
echo Timestamp(5, 20, 15, 33); // This Thursday at 20:15:33
// Output: 1403192733
البته اگه بخواین، strtotime راحتتره (من اون روش رو گفتم که خودتون هم یاد بگیرین چطور داره حساب میکنه و البته چون گفتین شماره روزها رو فارسی گذاشتین، شاید این روش دقیق جواب نده) :

echo strtotime('this thursday 20:15:33');

Tarragon
پنج شنبه 29 خرداد 1393, 17:41 عصر
ممنونم آقای شهرکی
آقای شهرکی اگربخوام بگم بعد از یک timestamp خاص مثلا 1403200000 اولین سه شنبه ساعت فلان چی؟
ممنونم.

MMSHFE
پنج شنبه 29 خرداد 1393, 19:56 عصر
از این نسخه استفاده کنید:

function Timestamp($weekday, $hour, $minute, $second = 0, $startTime = null) {
date_default_timezone_set('Asia/Tehran');
// Saturday = 1
// Sunday = 2
// Monday = 3
// Tuesday = 4
// Wednesday = 5
// Thursday = 6
// Friday = 7
list($w, $d, $m, $y) = explode('-', date('w-j-n-Y', ($startTime ? $startTime : time())));
$w++; // To match Latin weekdays with Lalai ones
$ts = mktime($hour, $minute, $second, $m, $d, $y);
if($w < $weekday) {
while($w < $weekday) {
$ts += 86400;
$w++;
}
}
else {
while($w > $weekday) {
$ts -= 86400;
$w--;
}
}
return $ts;
}
echo Timestamp(5, 20, 15, 33); // This Thursday at 20:15:33
// Output: 1403192733

Tarragon
پنج شنبه 29 خرداد 1393, 20:56 عصر
با سلام
ممنونم یه سوال دیگه هم دارم می خوام بگم توی هفته مثلا ۲۳م امسال دوشنبه ساعت فلان هم timestamp بده.
ممنونم.

MMSHFE
پنج شنبه 29 خرداد 1393, 21:03 عصر
فکر کنم با یکم فکر کردن روی مسئله و همین پارامترهای مختلف تابع date میتونید کاری که میخواین رو انجام بدین.