Phương pháp này hoạt động trên cả Windows và UNIX và nhận thức được vùng thời gian, đó có lẽ là những gì bạn muốn nếu bạn làm việc với ngày.both Windows and Unix and is time-zone aware, which is probably what you want if you work with dates.
Nếu bạn không quan tâm đến múi giờ hoặc muốn sử dụng múi giờ mà máy chủ của bạn sử dụng:
$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 [điều này sẽ khác nhau tùy thuộc vào múi giờ máy chủ của bạn ...] [This will differ depending on your server time zone...]
Nếu bạn muốn chỉ định trong múi giờ nào, ở đây EST. [Giống như 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
Hoặc nếu bạn muốn sử dụng UTC. [Giống như "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
Bất kể, nó luôn luôn là một điểm khởi đầu tốt là nghiêm ngặt khi phân tích các chuỗi vào dữ liệu có cấu trúc. Nó có thể tiết kiệm gỡ lỗi khó xử trong tương lai. Do đó, tôi khuyên bạn nên luôn chỉ định định dạng ngày.
Giáo sư Falken
23.6K18 Huy hiệu vàng99 Huy hiệu bạc168 Huy hiệu đồng18 gold badges99 silver badges168 bronze badges
Đã trả lời ngày 22 tháng 9 năm 2008 lúc 8:45Sep 22, 2008 at 8:45
OwenowenOwen
Huy hiệu vàng 80,8K2121 gold badges117 silver badges113 bronze badges
10
Ngoài ra còn có Strptime [] mong đợi chính xác một định dạng:strptime[] which expects exactly one format:
$a = strptime['22-09-2008', '%d-%m-%Y'];
$timestamp = mktime[0, 0, 0, $a['tm_mon']+1, $a['tm_mday'], $a['tm_year']+1900];
Giáo sư Falken
23.6K18 Huy hiệu vàng99 Huy hiệu bạc168 Huy hiệu đồng18 gold badges99 silver badges168 bronze badges
Đã trả lời ngày 22 tháng 9 năm 2008 lúc 8:45Sep 22, 2008 at 8:52
OwenowenArmin Ronacher
Huy hiệu vàng 80,8K2112 gold badges65 silver badges69 bronze badges
6
Ngoài ra còn có Strptime [] mong đợi chính xác một định dạng:
$dateTime = new DateTime['2008-09-22'];
echo $dateTime->format['U'];
// or
$date = new DateTime['2008-09-22'];
echo $date->getTimestamp[];
Đã trả lời ngày 22 tháng 9 năm 2008 lúc 8:52
$date = date_create['2008-09-22'];
echo date_format[$date, 'U'];
// or
$date = date_create['2008-09-22'];
echo date_timestamp_get[$date];
Armin Ronacherarmin Ronacher
$date = DateTime::createFromFormat['!d-m-Y', '22-09-2008'];
echo $dateTime->format['U'];
// or
$date = date_parse_from_format['!d-m-Y', '22-09-2008'];
echo date_format[$date, 'U'];
31.5K12 Huy hiệu vàng65 Huy hiệu bạc69 Huy hiệu Đồng
Không có API NO___TRANS___PRE___28:
$formatter = new IntlDateFormatter[
'en_US',
IntlDateFormatter::FULL,
IntlDateFormatter::FULL,
'GMT',
IntlDateFormatter::GREGORIAN,
'dd-MM-yyyy'
];
echo $formatter->parse['22-09-2008'];
Điều tương tự với API thủ tục:
Nếu những điều trên không thành công vì bạn đang sử dụng định dạng không được hỗ trợ, bạn có thể sử dụngMay 17, 2011 at 9:01
Lưu ý rằng nếu bạn không đặt NO___Trans___Pre___29, phần thời gian sẽ được đặt thành thời gian hiện tại, khác với bốn phần đầu tiên sẽ sử dụng nửa đêm khi bạn bỏ qua thời gian.Gordon
Tuy nhiên, một lựa chọn khác là sử dụng API NO___Trans___PRE___30:72 gold badges527 silver badges552 bronze badges
3
Trừ khi bạn đang làm việc với các chuỗi ngày địa phương, sự lựa chọn dễ dàng hơn là DateTime.
Đã trả lời ngày 17 tháng 5 năm 2011 lúc 9:01
Gordongordon
308K72 Huy hiệu vàng527 Huy hiệu bạc552 Huy hiệu đồng
Hãy cẩn thận với các chức năng như no___trans___pre___31 mà cố gắng "đoán" ý của bạn [tất nhiên không đoán, các quy tắc ở đây].
Thật vậy,
$a = strptime['22-09-2008', '%d-%m-%Y'];
$timestamp = mktime[0, 0, 0, $a['tm_mon']+1, $a['tm_mday'], $a['tm_year']+1900];
2 sẽ được phân tích cú pháp là ngày 22 tháng 9 năm 2008, vì đó là điều hợp lý duy nhất.Sep 22, 2008 at 16:22
Làm thế nào
$a = strptime['22-09-2008', '%d-%m-%Y'];
$timestamp = mktime[0, 0, 0, $a['tm_mon']+1, $a['tm_mday'], $a['tm_year']+1900];
3 sẽ được phân tích cú pháp? Có lẽ ngày 09 tháng 8 năm 2008.daremonThế còn
4? Một số phiên bản của PHP phân tích này là ngày 20 tháng 10 năm 2008.2 gold
badges27 silver badges27 bronze badges$a = strptime['22-09-2008', '%d-%m-%Y'];
$timestamp = mktime[0, 0, 0, $a['tm_mon']+1, $a['tm_mday'], $a['tm_year']+1900];
4
Phương pháp này hoạt động trên cả Windows và UNIX và nhận thức được vùng thời gian, đó có lẽ là những gì bạn muốn nếu bạn làm việc với ngày.both Windows and Unix and is time-zone aware, which is probably what you want if you work with dates.
Nếu bạn không quan tâm đến múi giờ hoặc muốn sử dụng múi giờ mà máy chủ của bạn sử dụng:
$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 [điều này sẽ khác nhau tùy thuộc vào múi giờ máy chủ của bạn ...] [This will differ depending on your server time zone...]
Nếu bạn muốn chỉ định trong múi giờ nào, ở đây EST. [Giống như 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
Hoặc nếu bạn muốn sử dụng UTC. [Giống như "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
Bất kể, nó luôn luôn là một điểm khởi đầu tốt là nghiêm ngặt khi phân tích các chuỗi vào dữ liệu có cấu trúc. Nó có thể tiết kiệm gỡ lỗi khó xử trong tương lai. Do đó, tôi khuyên bạn nên luôn chỉ định định dạng ngày.
Giáo sư FalkenOct 11, 2013 at 14:21
23.6K18 Huy hiệu vàng99 Huy hiệu bạc168 Huy hiệu đồngProf. Falken
23.6K18 Huy hiệu vàng99 Huy hiệu bạc168 Huy hiệu đồng18 gold badges99 silver badges168 bronze badges
1
Đã trả lời ngày 22 tháng 9 năm 2008 lúc 8:45
$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[];
}
1OwenowenSep 22, 2008 at 8:44
Huy hiệu vàng 80,8K21Till
Ngoài ra còn có Strptime [] mong đợi chính xác một định dạng:4 gold badges58 silver badges88 bronze badges
3
Đã trả lời ngày 22 tháng 9 năm 2008 lúc 8:52
$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[];
}
2Armin Ronacherarmin Ronacher
31.5K12 Huy hiệu vàng65 Huy hiệu bạc69 Huy hiệu Đồng
Không có API NO___TRANS___PRE___28:Apr 6, 2015 at 22:24
klit67klit67klit67
Điều tương tự với API thủ tục:6 silver badges4 bronze badges
1
Nếu những điều trên không thành công vì bạn đang sử dụng định dạng không được hỗ trợ, bạn có thể sử dụng
$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[];
}
3Lưu ý rằng nếu bạn không đặt NO___Trans___Pre___29, phần thời gian sẽ được đặt thành thời gian hiện tại, khác với bốn phần đầu tiên sẽ sử dụng nửa đêm khi bạn bỏ qua thời gian.
Tuy nhiên, một lựa chọn khác là sử dụng API NO___Trans___PRE___30:Sep 8, 2010 at 16:07
1
Trừ khi bạn đang làm việc với các chuỗi ngày địa phương, sự lựa chọn dễ dàng hơn là DateTime.
$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[];
}
4Đã trả lời ngày 17 tháng 5 năm 2011 lúc 9:01
kk.
Gordongordon11 gold badges34 silver badges65 bronze badges
308K72 Huy hiệu vàng527 Huy hiệu bạc552 Huy hiệu đồngFeb 9, 2018 at 10:03
2
Hãy cẩn thận với các chức năng như no___trans___pre___31 mà cố gắng "đoán" ý của bạn [tất nhiên không đoán, các quy tắc ở đây].
$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[];
}
5Thật vậy,
$a = strptime['22-09-2008', '%d-%m-%Y'];
$timestamp = mktime[0, 0, 0, $a['tm_mon']+1, $a['tm_mday'], $a['tm_year']+1900];
2 sẽ được phân tích cú pháp là ngày 22 tháng 9 năm 2008, vì đó là điều hợp lý duy nhất.Jun 11, 2012 at 10:36
Làm thế nào
$a = strptime['22-09-2008', '%d-%m-%Y'];
$timestamp = mktime[0, 0, 0, $a['tm_mon']+1, $a['tm_mday'], $a['tm_year']+1900];
3 sẽ được phân tích cú pháp? Có lẽ ngày 09 tháng 8 năm 2008.VictorThế còn
4? Một số phiên bản của PHP phân tích này là ngày 20 tháng 10 năm 2008.1 gold badge25 silver badges28 bronze badges$a = strptime['22-09-2008', '%d-%m-%Y'];
$timestamp = mktime[0, 0, 0, $a['tm_mon']+1, $a['tm_mday'], $a['tm_year']+1900];
1
Vì vậy, nếu bạn chắc chắn rằng đầu vào của bạn ở định dạng no___trans___pre___35, tốt hơn là sử dụng giải pháp được cung cấp bởi @Armin Ronacher.
- //nl3.php.net/manual/en/function.strptime.php#86572
Đã trả lời ngày 22 tháng 9 năm 2008 lúc 16:22
Example:
$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[];
}
6
Gordon
308K72 Huy hiệu vàng527 Huy hiệu bạc552 Huy hiệu đồng72 gold badges527 silver badges552 bronze badges
Đã trả lời ngày 7 tháng 1 năm 2010 lúc 13:26Jan 7, 2010 at 13:26
Blavlablavlablavla
5435 Huy hiệu bạc4 Huy hiệu đồng5 silver badges4 bronze badges
Nếu bạn muốn biết chắc chắn liệu một ngày có được phân tích cú pháp vào thứ gì đó bạn mong đợi hay không, bạn có thể sử dụng no___trans___pre___47:
$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[];
}
7Rõ ràng trong trường hợp này, nhưng ví dụ:
$dateTime = new DateTime['2008-09-22'];
echo $dateTime->format['U'];
// or
$date = new DateTime['2008-09-22'];
echo $date->getTimestamp[];
8 có thể là ngày 3 tháng 4 hoặc ngày 4 tháng 3 tùy thuộc vào nơi bạn đến :]Đã trả lời ngày 13 tháng 12 năm 2012 lúc 3:32Dec 13, 2012 at 3:32
Ja͢ckja͢ckJa͢ck
168K36 Huy hiệu vàng256 Huy hiệu bạc 305 Huy hiệu Đồng36 gold badges256 silver badges305 bronze badges
1
$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[];
}
8Đã trả lời ngày 31 tháng 7 năm 2014 lúc 7:31Jul 31, 2014 at 7:31
$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[];
}
9Đã trả lời ngày 11 tháng 2 năm 2012 lúc 11:26Feb 11, 2012 at 11:26
Phil Jacksonphil JacksonPhil Jackson
10.2K22 Huy hiệu vàng96 Huy hiệu bạc129 Huy hiệu đồng22 gold badges96 silver badges129 bronze badges
$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[];
}
0Nếu bạn muốn, hãy đặt nó vào thời gian đầu vào MySQL. Những điều trên hoạt động rất tốt [chỉ trong Php 5 trở lên]:
$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[];
}
1
Đã trả lời ngày 13 tháng 12 năm 2012 lúc 3:20Dec 13, 2012 at 3:20
Insigninsigninsign
4.75736 huy hiệu bạc32 huy hiệu đồng36 silver badges32 bronze badges
Đây là cách tôi làm điều đó:
$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[];
}
2Bằng cách này, bạn cho chức năng biết bạn đang sử dụng định dạng ngày nào và thậm chí chỉ định múi giờ.
BDL
20.2K17 Huy hiệu vàng51 Huy hiệu bạc51 Huy hiệu đồng17 gold badges51 silver badges51 bronze badges
Đã trả lời ngày 13 tháng 6 năm 2010 lúc 13:00Jun 13, 2010 at 13:00
Xin cẩn thận về thời gian/vùng nếu bạn đặt nó để lưu ngày trong cơ sở dữ liệu, vì tôi gặp sự cố khi tôi so sánh ngày từ mysql đã chuyển đổi thành no___trans___pre___49 bằng
$dateTime = new DateTime['2008-09-22'];
echo $dateTime->format['U'];
// or
$date = new DateTime['2008-09-22'];
echo $date->getTimestamp[];
3. Bạn phải sử dụng chính xác thời gian/vùng trước khi chuyển đổi ngày thành dấu thời gian nếu không, strtotime [] sẽ sử dụng múi giờ máy chủ mặc định.Vui lòng xem ví dụ này: //3v4l.org/brlmv
$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[];
}
3
Manoj Sharma
1.4672 Huy hiệu vàng13 Huy hiệu bạc20 Huy hiệu Đồng2 gold badges13 silver badges20 bronze badges
Đã trả lời ngày 19 tháng 5 năm 2016 lúc 11:50May 19, 2016 at 11:50
AkamakamAkam
99315 Huy hiệu bạc23 Huy hiệu đồng15 silver badges23 bronze badges
Đối với php> = 5.3, 7 & 8, điều này có thể hoạt động-
$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[];
}
4Đã trả lời ngày 24 tháng 3 lúc 17:03Mar 24 at 17:03
Raju Ahmedraju AhmedRaju Ahmed
3243 Huy hiệu bạc17 Huy hiệu đồng3 silver badges17 bronze badges
Nếu bạn đã có ngày ở định dạng đó, bạn chỉ cần gọi chức năng "Strtotime" trong PHP.strtotime" function in PHP.
$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[];
}
5Hoặc trong một dòng duy nhất:
$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[];
}
6Ngắn và đơn giản.
Đã trả lời ngày 12 tháng 8 lúc 16:24Aug 12 at 16:24
J.C.J.C.J.C.
Huy hiệu đồng 1141 Bạc4 Huy hiệu đồng1 silver badge4 bronze badges
Nếu bạn đang tìm cách chuyển đổi DateTime UTC [no___trans___pre___51] thành dấu thời gian, thì đây là cách bạn làm điều đó:
$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[];
}
7Đã trả lời ngày 27 tháng 2 năm 2016 lúc 15:52Feb 27, 2016 at 15:52
ObihillobihillObiHill
11.1K19 Huy hiệu vàng82 Huy hiệu bạc129 Huy hiệu đồng19 gold badges82 silver badges129 bronze badges