Bagaimana saya mendapatkan cap waktu dari mis 22-09-2008
?
350
Metode ini bekerja pada kedua Windows dan Unix dan merupakan zona waktu sadar, yang mungkin apa yang Anda inginkan jika Anda bekerja dengan tanggal .
Jika Anda tidak peduli dengan zona waktu, atau ingin menggunakan zona waktu yang digunakan server Anda:
$d = DateTime::createFromFormat('d-m-Y H:i:s', '22-09-2008 00:00:00');
if ($d === false) {
die("Incorrect date string");
} else {
echo $d->getTimestamp();
}
1222093324 (Ini akan berbeda tergantung pada zona waktu server Anda ...)
Jika Anda ingin menentukan zona waktu mana, di sini EST. (Sama seperti New York.)
$d = DateTime::createFromFormat(
'd-m-Y H:i:s',
'22-09-2008 00:00:00',
new DateTimeZone('EST')
);
if ($d === false) {
die("Incorrect date string");
} else {
echo $d->getTimestamp();
}
1222093305
Atau jika Anda ingin menggunakan UTC . (Sama seperti " GMT ".)
$d = DateTime::createFromFormat(
'd-m-Y H:i:s',
'22-09-2008 00:00:00',
new DateTimeZone('UTC')
);
if ($d === false) {
die("Incorrect date string");
} else {
echo $d->getTimestamp();
}
1222093289
Apapun, itu selalu merupakan titik awal yang baik untuk menjadi ketat ketika mem-parsing string menjadi data terstruktur. Itu dapat menyimpan debugging yang aneh di masa depan. Karena itu saya sarankan untuk selalu menentukan format tanggal.
Ada juga strptime () yang mengharapkan tepat satu format:
sumber
date_parse_from_format
bukanstrptime
.strptime
tidak diterapkan pada platform Windows.Dengan
DateTime
API :Sama dengan API prosedural:
Jika hal di atas gagal karena Anda menggunakan format yang tidak didukung , Anda dapat menggunakan
Perhatikan bahwa jika Anda tidak mengatur
!
, porsi waktu akan diatur ke waktu saat ini, yang berbeda dari empat yang pertama yang akan menggunakan tengah malam ketika Anda menghilangkan waktu.Alternatif lain adalah menggunakan
IntlDateFormatter
API:Kecuali jika Anda bekerja dengan string tanggal lokal, pilihan yang lebih mudah adalah DateTime.
sumber
!
cap waktu berdasarkan tanggal saya berubah pada setiap penyegaran dan membuat saya marah - karena DateTime sangat membantu menambah waktu saat ini tanpa bertanya atau diberitahu. Grrr.Berhati-hatilah dengan fungsi-fungsi seperti
strtotime()
itu yang mencoba "menebak" apa yang Anda maksudkan (tidak menebak tentu saja, aturannya ada di sini ).Memang
22-09-2008
akan diuraikan sebagai 22 September 2008 , karena itu adalah satu-satunya hal yang masuk akal.Bagaimana akan
08-09-2008
diuraikan? Mungkin 09 Agustus 2008 .Bagaimana dengan
2008-09-50
? Beberapa versi PHP menguraikan ini sebagai 20 Oktober 2008 .Jadi, jika Anda yakin input Anda dalam
DD-MM-YYYY
format, lebih baik menggunakan solusi yang ditawarkan oleh @Armin Ronacher .sumber
dd-mm-yyyy
tidakmm-dd-yyyy
.YYYY-mm-dd
Konversi hanya terjadi untuk ditampilkan kepada penggunaMetode ini bekerja pada kedua Windows dan Unix dan merupakan zona waktu sadar, yang mungkin apa yang Anda inginkan jika Anda bekerja dengan tanggal .
Jika Anda tidak peduli dengan zona waktu, atau ingin menggunakan zona waktu yang digunakan server Anda:
1222093324 (Ini akan berbeda tergantung pada zona waktu server Anda ...)
Jika Anda ingin menentukan zona waktu mana, di sini EST. (Sama seperti New York.)
1222093305
Atau jika Anda ingin menggunakan UTC . (Sama seperti " GMT ".)
1222093289
Apapun, itu selalu merupakan titik awal yang baik untuk menjadi ketat ketika mem-parsing string menjadi data terstruktur. Itu dapat menyimpan debugging yang aneh di masa depan. Karena itu saya sarankan untuk selalu menentukan format tanggal.
sumber
Menggunakan mktime :
sumber
strtotime()
Untuk beberapa alasanstrtotime()
tidak bekerja pada tanggal tertentu, dan karena itu sangat tidak dapat diandalkan.Menggunakan fungsi strtotime () Anda dapat dengan mudah mengkonversi tanggal ke cap waktu
Info lebih lanjut: http://php.net/manual/en/function.strtotime.php
Alat konversi online: http://freeonlinetools24.com/
sumber
Berikut ini adalah solusi yang sangat sederhana dan efektif menggunakan
split
danmtime
fungsi:Itu bekerja seperti pesona bagi saya.
sumber
Mengingat bahwa fungsi
strptime()
ini tidak berfungsi untuk Windows danstrtotime()
dapat mengembalikan hasil yang tidak terduga, saya sarankan menggunakandate_parse_from_format()
:sumber
Jika Anda ingin tahu pasti apakah suatu tanggal diuraikan menjadi sesuatu yang Anda harapkan, Anda dapat menggunakan
DateTime::createFromFormat()
:Jelas dalam kasus ini, tetapi mis.
03-04-2008
Bisa 3 April atau 4 Maret tergantung dari mana Anda berasal :)sumber
DateTime::createFromFormat
mengembalikanfalse
kesalahan , tidaknull
.Jika Anda tahu penggunaan format
strptime
karenastrtotime
tidak menebak untuk format, yang mungkin tidak selalu benar. Karenastrptime
tidak diterapkan di Windows ada fungsi khususIngat bahwa nilai baliknya
tm_year
adalah mulai tahun 1900! dantm_month
0-11Contoh:
sumber
http://php.net/manual/en/function.date.php
sumber
sumber
Gunakan fungsi PHP
strtotime()
date - Memformat waktu / tanggal lokal
sumber
sumber
Jika Anda mau, letakkan di stempel waktu tipe input MySQL . Di atas berfungsi dengan baik (hanya dalam PHP 5 atau lebih baru):
sumber
Inilah cara saya melakukannya:
Dengan cara ini, Anda memberi tahu fungsi format tanggal apa yang Anda gunakan dan bahkan menentukan zona waktu.
sumber
Harap berhati-hati tentang waktu / zona jika Anda mengaturnya untuk menyimpan tanggal dalam database, karena saya mendapat masalah ketika saya membandingkan tanggal dari mysql yang dikonversi menjadi
timestamp
menggunakanstrtotime
. Anda harus menggunakan waktu / zona yang sama persis sebelum mengonversi tanggal ke stempel waktu, jika tidak, strtotime () akan menggunakan zona waktu server default.Silakan lihat contoh ini: https://3v4l.org/BRlmV
sumber
Jika Anda ingin mengonversi datetime UTC (
2016-02-14T12:24:48.321Z
) ke timestamp, berikut ini cara melakukannya:sumber