Bagaimana saya mendapatkan stempel waktu di php untuk hari ini pada tengah malam. Katakanlah sekarang hari senin jam 5 sore dan saya ingin cap waktu untuk hari senin (hari ini) pada tengah malam (jam 12 siang) yang sudah terjadi.
Terima kasih
Bagaimana saya mendapatkan stempel waktu di php untuk hari ini pada tengah malam. Katakanlah sekarang hari senin jam 5 sore dan saya ingin cap waktu untuk hari senin (hari ini) pada tengah malam (jam 12 siang) yang sudah terjadi.
Terima kasih
Jawaban:
$timestamp = strtotime('today midnight');
Anda mungkin ingin melihat apa yang ditawarkan PHP: http://php.net/datetime
$timestamp = strtotime('today');
tengah malam. Tapi pssst yang di atas terlihat lebih keren sebagai jawaban atas pertanyaan;)
strtotime('today+00:00')
.
Saya pikir Anda harus menggunakan objek PHP DateTime baru karena tidak ada masalah melakukan tanggal di luar batasan 32 bit yang dimiliki strtotime (). Berikut adalah contoh bagaimana Anda mendapatkan tanggal hari ini pada tengah malam.
$today = new DateTime();
$today->setTime(0,0);
Atau jika Anda menggunakan PHP 5.4 atau yang lebih baru, Anda dapat melakukannya dengan cara ini:
$today = (new DateTime())->setTime(0,0);
Kemudian Anda dapat menggunakan echo $today->format('Y-m-d');
untuk mendapatkan format yang Anda inginkan sebagai keluaran objek.
new DateTime('today midnight')
yang membuat maksudnya lebih jelas (tapi ini tentu saja masalah selera).
$today = new DateTime('today')
new Carbon('today midnight')
dan kemudian Anda dapat menggunakan semua bahan Karbon seperti ->subDays(6)
. Lihat carbon.nesbot.com
Hari ini tengah malam. Mudah.
$stamp = mktime(0, 0, 0);
Anda ingin menghitung waktu peristiwa langit terbaru saat matahari telah lewat tepat di bawah kaki Anda, disesuaikan dengan konvensi lokal untuk menandai tengah hari dan juga berpotensi menyesuaikan sehingga orang memiliki cukup siang hari yang tersisa setelah pulang kerja, dan untuk pertimbangan politik lainnya.
Menakutkan kan? Sebenarnya ini adalah masalah umum tetapi jawaban lengkapnya bergantung pada lokasi:
$zone = new \DateTimeZone('America/New_York'); // Or your own definition of “here”
$todayStart = new \DateTime('today midnight', $zone);
$timestamp = $todayStart->getTimestamp();
Definisi potensial dari "di sini" tercantum di https://secure.php.net/manual/en/timezones.php
strtotime('America/New_York today midnight');
? - 3v4l.org/I85qD
$today_at_midnight = strtotime(date("Ymd"));
harus memberikan apa yang Anda cari.
penjelasan
Apa yang saya lakukan adalah menggunakan fungsi tanggal PHP untuk mendapatkan tanggal hari ini tanpa referensi ke waktu, dan kemudian meneruskannya ke fungsi 'string to time' yang mengubah tanggal dan waktu menjadi stempel waktu epoch. Jika tidak mendapat waktu, itu mengasumsikan detik pertama hari itu.
Referensi: Fungsi Tanggal: http://php.net/manual/en/function.date.php
String To Time: http://us2.php.net/manual/en/function.strtotime.php
strtotime()
, pikiran begitu terfokus pada fungsi tanggal. Permintaan maaf.
Dengan cara yang lebih objek:
$today = new \DateTimeImmutable('today');
contoh:
echo (new \DateTimeImmutable('today'))->format('Y-m-d H:i:s');
// will output: 2019-05-16 00:00:00
dan:
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');
valid
Anda juga dapat mencoba
strtotime('12am')
atau strtotime('[input any time you wish to here. e.g noon, 6pm, 3pm, 8pm, etc]')
. Saya melewatkan menambahkan hari ini sebelum tengah malam karena defaultnya adalah hari ini.
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());