Tôi ngạc nhiên nếu nó có thể đảo ngược. Ý tôi là tôi có thể convert 1388516401 to 2014-01-01 00:00:01
. Điều tôi thực sự muốn biết là, logic đằng sau sự chuyển đổi này là gì. Làm thế nào PHP chuyển đổi ngày thành một số nguyên cụ thể.
Giacomo1968
25.2k11 Huy hiệu vàng69 Huy hiệu bạc97 Huy hiệu Đồng11 gold badges69 silver badges97 bronze badges
Hỏi ngày 16 tháng 12 năm 2013 lúc 17:36Dec 16, 2013 at 17:36
3
Có bạn có thể chuyển đổi nó trở lại. Bạn co thể thử:
date["Y-m-d H:i:s", 1388516401];
Logic đằng sau chuyển đổi này từ ngày sang số nguyên được giải thích trong Strtotime trong PHP:
Chức năng dự kiến sẽ được cung cấp một chuỗi chứa định dạng ngày tiếng Anh và sẽ cố gắng phân tích định dạng đó thành dấu thời gian UNIX [số giây kể từ ngày 1 tháng 1 năm 1970 00:00:00 UTC], liên quan đến dấu thời gian được đưa ra ngay bây giờ, hoặc Thời gian hiện tại nếu bây giờ không được cung cấp.
Ví dụ, strtotime["1970-01-01 00:00:00"]
cung cấp cho bạn 0 và strtotime["1970-01-01 00:00:01"]
cung cấp cho bạn 1.
Điều này có nghĩa là nếu bạn đang in strtotime["2014-01-01 00:00:01"]
sẽ cung cấp cho bạn đầu ra 1388516401
, thì ngày ____10 là 1.388.516.401 giây sau ngày 1 tháng 1 năm 1970 00:00:00 UTC.
Moshe Katz
15.2K7 Huy hiệu vàng65 Huy hiệu bạc111 Huy hiệu đồng7 gold badges65 silver badges111 bronze badges
Đã trả lời ngày 16 tháng 12 năm 2013 lúc 17:46Dec 16, 2013 at 17:46
SabarisabariSabari
6.0851 Huy hiệu vàng25 Huy hiệu bạc34 Huy hiệu đồng1 gold badge25 silver badges34 bronze badges
1
Bạn có thể thử điều này,
echo date["Y-m-d H:i:s", 1388516401];
Như đã lưu ý bởi Thegame,
Điều này có nghĩa là bạn vượt qua một giá trị chuỗi cho thời gian và tùy chọn là một giá trị cho thời gian hiện tại, đó là dấu thời gian Unix. Giá trị được trả về là một số nguyên là dấu thời gian Unix.
echo strtotime["2014-01-01 00:00:01"];
Điều này sẽ trở lại vào giá trị 1388516401, đó là dấu thời gian UNIX cho ngày 2014-01-01. Điều này có thể được xác nhận bằng hàm ngày [] như dưới đây:
echo date['Y-m-d', 1198148400]; // echos 2014-01-01
Đã trả lời ngày 16 tháng 12 năm 2013 lúc 17:38Dec 16, 2013 at 17:38
Krish rkrish rKrish R
22.3K7 Huy hiệu vàng49 Huy hiệu bạc57 Huy hiệu đồng7 gold badges49 silver badges57 bronze badges
0
Tôi đoán bạn đang hỏi tại sao 1388516401 bằng 2014-01-01 ...?
Có một lý do lịch sử cho điều đó. Có một biến số nguyên 32 bit, được gọi là
date["Y-m-d H:i:s", 1388516401];
1, giữ số lượng thời gian trôi qua kể từ 1970-01-01 00:00:00. Giá trị của nó thể hiện thời gian tính bằng giây. Điều này có nghĩa là trong năm 2014-01-01 00:00:01 date["Y-m-d H:i:s", 1388516401];
1 sẽ bằng 1388516401.1970-01-01 00:00:00. Its value expresses time in seconds. This means that in 2014-01-01 00:00:01 date["Y-m-d H:i:s", 1388516401];
1 will be equal to 1388516401.Điều này dẫn chúng ta chắc chắn đến một sự thật thú vị khác ... vào năm 2038-01-19 03:14:07
date["Y-m-d H:i:s", 1388516401];
1 sẽ đạt 2147485547, giá trị tối đa cho số 32 bit. Bạn đã bao giờ nghe về John Titor và vấn đề năm 2038 chưa? : D2038-01-19 03:14:07 date["Y-m-d H:i:s", 1388516401];
1 will reach 2147485547, the maximum value for a 32-bit number. Ever heard about
John Titor and the Year 2038 problem? :DĐã trả lời ngày 16 tháng 12 năm 2013 lúc 17:49Dec 16, 2013 at 17:49
VereosvereosVereos
4934 Huy hiệu bạc15 Huy hiệu Đồng4 silver badges15 bronze badges
Hàm Time [] hiển thị các giây từ bây giờ và Epoch Unix, 01 01 1970 [00:00:00 GMT]. Strtotime [] biến đổi định dạng ngày bình thường thành định dạng thời gian []. Vì vậy, đại diện của ngày đó thành vài giây sẽ là: 1388516401
Nguồn: //www.php.net/time
Đã trả lời ngày 16 tháng 12 năm 2013 lúc 17:47Dec 16, 2013 at 17:47
SpiderLinkedSpiderLinkedSpiderLinked
3431 Huy hiệu vàng6 Huy hiệu bạc14 Huy hiệu đồng1 gold badge6 silver badges14 bronze badges