Bugün gece yarısı için php'de bir zaman damgası almaya nasıl devam ederdim? Pazartesi 5 PM olduğunu varsayalım ve Pazartesi (bugün) gece yarısı (12 am) için Zaman Damgasını istiyorum ki bu zaten gerçekleşmiş.
teşekkür ederim
Bugün gece yarısı için php'de bir zaman damgası almaya nasıl devam ederdim? Pazartesi 5 PM olduğunu varsayalım ve Pazartesi (bugün) gece yarısı (12 am) için Zaman Damgasını istiyorum ki bu zaten gerçekleşmiş.
teşekkür ederim
Yanıtlar:
$timestamp = strtotime('today midnight');
PHP'nin sunduklarına bir göz atmak isteyebilirsiniz: http://php.net/datetime
$timestamp = strtotime('today');gece yarısı. Ama pssst soruya cevap olarak daha havalı görünüyor;)
strtotime('today+00:00').
Strtotime () 'ın sahip olduğu 32 bitlik kısıtlamaların ötesinde tarihlerle ilgili herhangi bir sorunu olmadığı için yeni PHP DateTime nesnesini kullanmanız gerektiğini düşünüyorum. İşte bugünün gece yarısı tarihini nasıl alacağınıza dair bir örnek.
$today = new DateTime();
$today->setTime(0,0);
Veya PHP 5.4 veya sonraki bir sürümünü kullanıyorsanız şu şekilde yapabilirsiniz:
$today = (new DateTime())->setTime(0,0);
Ardından echo $today->format('Y-m-d');, nesne çıktınızın olmasını istediğiniz formatı elde etmek için kullanabilirsiniz .
new DateTime('today midnight'), bu da niyeti daha net hale getirir (ama bu elbette bir zevk meselesidir).
$today = new DateTime('today')
new Carbon('today midnight')ve daha sonra tüm Karbon gibi şeyleri kullanabilirsiniz ->subDays(6). Bkz carbon.nesbot.com
Güneşin doğrudan ayaklarınızın altından geçtiği en son göksel olayın zamanını hesaplamak istiyorsunuz, öğlen saatlerini işaretleyen yerel geleneklere göre ayarlanmış ve ayrıca potansiyel olarak insanların işten eve döndükten sonra yeterli gün ışığına sahip olacak şekilde ayarlanması ve diğer siyasi düşünceler.
Korkunç değil mi? Aslında bu yaygın bir sorundur, ancak tam yanıt konuma bağlıdır:
$zone = new \DateTimeZone('America/New_York'); // Or your own definition of “here”
$todayStart = new \DateTime('today midnight', $zone);
$timestamp = $todayStart->getTimestamp();
"Burada" nın olası tanımları https://secure.php.net/manual/en/timezones.php adresinde listelenmiştir.
strtotime('America/New_York today midnight');? - 3v4l.org/I85qD
$today_at_midnight = strtotime(date("Ymd"));
Peşinde olduğun şeyi sana vermelisin.
açıklama
Yaptığım şey, PHP'nin tarih işlevini kullanarak bugünün tarihini zamana herhangi bir gönderme yapmadan almak ve ardından bunu, tarih ve saati bir çağ zaman damgasına dönüştüren 'zaman dizgisi' işlevine geçirmekti. Bir zaman almazsa, o günün ilk saniyesini varsayar.
Referanslar: Tarih Fonksiyonu: http://php.net/manual/en/function.date.php
Zamana Dize: http://us2.php.net/manual/en/function.strtotime.php
strtotime()zihin, tarih işlevine çok odaklanmıştı. Özür.
Daha nesnel bir şekilde:
$today = new \DateTimeImmutable('today');
misal:
echo (new \DateTimeImmutable('today'))->format('Y-m-d H:i:s');
// will output: 2019-05-16 00:00:00
ve:
echo (new \DateTimeImmutable())->format('Y-m-d H:i:s');
echo (new \DateTimeImmutable('now'))->format('Y-m-d H:i:s');
// will output: 2019-05-16 14:00:35
$midnight = strtotime('midnight');geçerlidir
Ayrıca deneyebilirsiniz
strtotime('12am')veya strtotime('[input any time you wish to here. e.g noon, 6pm, 3pm, 8pm, etc]'). Bugün gece yarısından önce eklemeyi atladım çünkü varsayılan bugün.
function getTodaysTimeStamp() {
const currentTimeStamp = Math.round(Date.now() / 1000);
const startOfDay = currentTimeStamp - (currentTimeStamp % 86400);
return { startOfDay, endOfDay: startOfDay + 86400 - 1 };
}
// starts from sunday
function getThisWeeksTimeStamp() {
const currentTimeStamp = Math.round(Date.now() / 1000);
const currentDay = new Date(currentTimeStamp * 1000);
const startOfWeek = currentTimeStamp - (currentDay.getDay() * 86400) - (currentTimeStamp % 86400);
return { startOfWeek, endOfWeek: startOfWeek + 7 * 86400 - 1 };
}
function getThisMonthsTimeStamp() {
const currentTimeStamp = Math.round(Date.now() / 1000);
const currentDay = new Date(currentTimeStamp * 1000);
const startOfMonth = currentTimeStamp - ((currentDay.getDate() - 1) * 86400) - (currentTimeStamp % 86400);
const currentMonth = currentDay.getMonth() + 1;
let daysInMonth = 0;
if (currentMonth === 2) daysInMonth = 28;
else if ([1, 3, 5, 7, 8, 10, 12].includes(currentMonth)) daysInMonth = 31;
else daysInMonth = 30;
return { startOfMonth, endOfMonth: startOfMonth + daysInMonth * 86400 - 1 };
}
console.log(getTodaysTimeStamp());
console.log(getThisWeeksTimeStamp());
console.log(getThisMonthsTimeStamp());