แปลงเวลาประทับเป็น PHP วันที่ / เวลาที่อ่านได้


227

ฉันมีการประทับเวลาที่จัดเก็บในเซสชัน (1299446702)

ฉันจะแปลงให้เป็นวันที่ / เวลาที่อ่านได้ใน PHP ได้อย่างไร? ฉันได้ลอง srttotime และอื่น ๆ เพื่อประโยชน์

คำตอบ:



84

strtotime ทำให้สตริงวันที่เป็นเวลาประทับ คุณต้องการที่จะทำตรงข้ามซึ่งเป็นวันที่ รูปแบบวันที่ mysql ทั่วไปคือdate('Y-m-d H:i:s'); ตรวจสอบหน้าคู่มือเพื่อดูว่าตัวอักษรอื่นเป็นตัวแทนอะไร

หากคุณมีการประทับเวลาที่คุณต้องการใช้ (เห็นได้ชัดว่าคุณทำ) date()มันเป็นอาร์กิวเมนต์ที่สองของ


4
มันจะเป็นข้อความที่ดีที่ฉันผ่านในวันที่ปัจจุบันของฉันดังนี้:echo date('m/d/Y', strtotime($current_date_variable);
cwiggo

มีคำสั่งที่ไม่มีการแปลงเวลาเพื่อมาตรฐาน datetime ของพวกเขาเพราะฉันแปลงวันที่และเวลาเพื่อ unix timestamp แต่ในฐานข้อมูลของฉันยังคงเป็น datetime ฉันจะลองนี้ แต่ฉันยังพบว่าแปลกที่ไม่มีคำสั่งเฉพาะสำหรับมัน
Marc Roelse

64

ฉันเพิ่งเพิ่ม H: i: s ไปยังคำตอบของ Rocket เพื่อให้ได้เวลาพร้อมกับวันที่

echo date('m/d/Y H:i:s', 1299446702);

ผลลัพธ์: 03/06/2011 16:25:02


49
$timestamp = 1465298940;
$datetimeFormat = 'Y-m-d H:i:s';

$date = new \DateTime();
// If you must have use time zones
// $date = new \DateTime('now', new \DateTimeZone('Europe/Helsinki'));
$date->setTimestamp($timestamp);
echo $date->format($datetimeFormat);

ผล: 2016-06-07 14:29:00

โซนเวลาอื่น:


23

หากคุณใช้ PHP date()คุณสามารถใช้รหัสนี้เพื่อรับวันที่เวลาวินาทีและอื่น ๆ

$time = time();               // you have 1299446702 in time
$year = $time/31556926 % 12;  // to get year
$week = $time / 604800 % 52;  // to get weeks
$hour = $time / 3600 % 24;    // to get hours
$minute = $time / 60 % 60;    // to get minutes
$second = $time % 60;         // to get seconds

12
ปีอธิกวินาทีและสอง ...
Petteri Hietavirta

$year = date('Y', $time)
Ruben Kazumov

16

ฉันรู้ว่าเป็นคำถามเก่า แต่สูงในผลการค้นหา

หากใครต้องการแปลงเวลาเป็นวัตถุ DateTime โดยตรงมีหนึ่งซับง่ายๆ:

$timestamp = 1299446702;
$date = DateTime::createFromFormat('U', $timestamp);

การติดตามความคิดเห็น @sromero พารามิเตอร์เขตเวลา (พารามิเตอร์ที่ 3 ใน DateTime :: createFromFormat ()) จะถูกละเว้นเมื่อผ่านการประทับเวลา unix ดังนั้นรหัสด้านล่างจึงไม่จำเป็น

$date = DateTime::createFromFormat('U', $timestamp, new DateTimeZone('UTC'); // not needed, 3rd parameter is ignored

คุณสามารถตรวจสอบคู่มือ PHP ของDateTime :: createFromFormatสำหรับข้อมูลเพิ่มเติมและตัวเลือก


1
แสดงความคิดเห็นเกี่ยวกับรหัสบรรทัดสุดท้ายของคุณ: อ้างอิงจากหน้าคู่มือที่คุณเชื่อมโยง: "หมายเหตุ: พารามิเตอร์เขตเวลาและเขตเวลาปัจจุบันจะถูกละเว้นเมื่อพารามิเตอร์เวลามีการประทับเวลา UNIX (เช่น 946684800) หรือระบุเขตเวลา (เช่น 2010 -01-28T15: 00: 00 + 02: 00) ".
sromero

@sromero คุณมีสิทธิ์ พารามิเตอร์เขตเวลาจะถูกละเว้นในกรณีนี้
Pascal



8

นอกจากว่าคุณต้องการรูปแบบวันที่และเวลาที่กำหนดเองจะง่ายขึ้นลดข้อผิดพลาดน้อยลงและอ่านได้ง่ายขึ้นเพื่อใช้ค่าคงที่รูปแบบวันที่ในตัว :

echo date(DATE_RFC822, 1368496604);

2
นี่ควรเป็นคำตอบที่ดีที่สุด
alexg

6

ลองอันนี้:

echo date('m/d/Y H:i:s', 1541843467);

1
สวัสดี! ดูเหมือนว่าคำตอบนี้ได้รับการเสนอแล้ว ดูคำตอบที่ดีที่สุด
หมวก

4

echo date("l M j, Y",$res1['timep']);
นี่เป็นสิ่งที่ดีจริงๆสำหรับการแปลงเวลาระบบยูนิกซ์เป็นวันที่อ่านได้พร้อมกับวัน ตัวอย่าง: วันพฤหัสบดี 7 ก.ค. 2559


1
คำตอบที่คล้ายกันถูกโพสต์ไปแล้วอะไรคือข้อดีของข้อมูลในคำตอบของคุณ?
Steffen Harbich


4
$epoch = 1483228800;
$dt = new DateTime("@$epoch");  // convert UNIX timestamp to PHP DateTime
echo $dt->format('Y-m-d H:i:s'); // output = 2017-01-01 00:00:00

ในตัวอย่างด้านบน "r" และ "Ymd H: i: s" เป็นรูปแบบวันที่ของ PHP, ตัวอย่างอื่น ๆ :

รูปแบบผลลัพธ์

r              -----    Wed, 15 Mar 2017 12:00:00 +0100 (RFC 2822 date)
c              -----    2017-03-15T12:00:00+01:00 (ISO 8601 date)
M/d/Y          -----    Mar/15/2017
d-m-Y          -----    15-03-2017
Y-m-d H:i:s    -----    2017-03-15 12:00:00
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.