Cho các chuỗi sau:
- 01/01/11
- 1/1/11
- 1/1/2011
- 01/1/2011
- 1-1-2011
- vân vân
Làm cách nào để chuyển đổi chúng thành dấu thời gian Unix. Lưu ý rằng trong hầu hết các trường hợp, điều này sẽ ở định dạng dd mm yyyy
với các phân định khác nhau.
Hakre
Phù bằng vàng 188K50420 Huy hiệu bạc810 Huy hiệu Đồng50 gold badges420 silver badges810 bronze badges
hỏi ngày 28 tháng 6 năm 2011 lúc 2:44Jun 28, 2011 at 2:44
Nhìn vào lớp strtotime
, strptime
hoặc DateTime
.
strtotime
Ví dụ:
$timestamp = strtotime['1/1/2011'];
Mỗi chức năng đều có cảnh báo. Chẳng hạn, tài liệu cho strtotime
nói rằng:
Các ngày ở các định dạng M/D/Y hoặc D-M-Y được định hướng bằng cách nhìn vào phân tách giữa các thành phần khác nhau: nếu thiết bị phân tách là một dấu gạch chéo [/], thì giả sử M/D/Y của Mỹ; trong khi đó nếu dấu phân cách là một dấu gạch ngang [-] hoặc một dấu chấm [.], thì định dạng D-M-Y châu Âu được giả định.
Bạn cũng có thể sử dụng preg_match
để chụp cả 3 phần và tạo dấu thời gian của riêng bạn bằng
if [ preg_match['/^[?P\d+][-\/][?P\d+][-\/][?P\d+]$/', '1/1/2011', $matches] ]
{
$timestamp = mktime[0, 0, 0, [ $matches['month'] - 1 ], $matches['day'], $matches['year']];
}
0.preg_match
Ví dụ:
if [ preg_match['/^[?P\d+][-\/][?P\d+][-\/][?P\d+]$/', '1/1/2011', $matches] ]
{
$timestamp = mktime[0, 0, 0, [ $matches['month'] - 1 ], $matches['day'], $matches['year']];
}
rtpharry
12.9k4 Huy hiệu vàng44 Huy hiệu bạc62 Huy hiệu Đồng4 gold badges44 silver badges62 bronze badges
Đã trả lời ngày 28 tháng 6 năm 2011 lúc 2:47Jun 28, 2011 at 2:47
2
$to='23.1.2014-18:16:35'
list[$part1,$part2] = explode['-', $to];
list[$day, $month, $year] = explode['.', $part1];
list[$hours, $minutes,$seconds] = explode[':', $part2];
$timeto = mktime[$hours, $minutes, $seconds, $month, $day, $year];
echo $timeto;
Đã trả lời ngày 27 tháng 5 năm 2014 lúc 12:20May 27, 2014 at 12:20
Có lẽ bạn đang tìm kiếm chức năng strtotime.
Tuy nhiên, chỉ là một sự thận trọng, nó sẽ chuyển đổi từng định dạng chuỗi có thể thành một dấu thời gian unix [epoch] vì rất khó để phân tích rõ ràng từng chuỗi cho đến ngày.
Đã trả lời ngày 28 tháng 6 năm 2011 lúc 2:48Jun 28, 2011 at 2:48
Anubhavaanubhavaanubhava
738K62 Huy hiệu vàng537 Huy hiệu bạc615 Huy hiệu Đồng62 gold badges537 silver badges615 bronze badges
[Php 4, Php 5, Php 7, Php 8]
Strtotime - phân tích về bất kỳ mô tả dữ liệu văn bản tiếng Anh nào vào dấu thời gian UNIX — Parse about any English textual datetime description into a Unix timestamp
Sự mô tả
strtotime [chuỗi
2,? int if [ preg_match['/^[?P\d+][-\/][?P\d+][-\/][?P\d+]$/', '1/1/2011', $matches] ]
{
$timestamp = mktime[0, 0, 0, [ $matches['month'] - 1 ], $matches['day'], $matches['year']];
}
3 = if [ preg_match['/^[?P\d+][-\/][?P\d+][-\/][?P\d+]$/', '1/1/2011', $matches] ]
{
$timestamp = mktime[0, 0, 0, [ $matches['month'] - 1 ], $matches['day'], $matches['year']];
}
4]: int | false[string if [ preg_match['/^[?P\d+][-\/][?P\d+][-\/][?P\d+]$/', '1/1/2011', $matches] ]
{
$timestamp = mktime[0, 0, 0, [ $matches['month'] - 1 ], $matches['day'], $matches['year']];
}
2, ?int if [ preg_match['/^[?P\d+][-\/][?P\d+][-\/][?P\d+]$/', '1/1/2011', $matches] ]
{
$timestamp = mktime[0, 0, 0, [ $matches['month'] - 1 ], $matches['day'], $matches['year']];
}
3 = if [ preg_match['/^[?P\d+][-\/][?P\d+][-\/][?P\d+]$/', '1/1/2011', $matches] ]
{
$timestamp = mktime[0, 0, 0, [ $matches['month'] - 1 ], $matches['day'], $matches['year']];
}
4]:
int|falseif [ preg_match['/^[?P\d+][-\/][?P\d+][-\/][?P\d+]$/', '1/1/2011', $matches] ]
{
$timestamp = mktime[0, 0, 0, [ $matches['month'] - 1 ], $matches['day'], $matches['year']];
}
Hàm 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 trong
if [ preg_match['/^[?P\d+][-\/][?P\d+][-\/][?P\d+]$/', '1/1/2011', $matches] ]
{
$timestamp = mktime[0, 0, 0, [ $matches['month'] - 1 ], $matches['day'], $matches['year']];
}
5, hoặc thời gian hiện tại nếu if [ preg_match['/^[?P\d+][-\/][?P\d+][-\/][?P\d+]$/', '1/1/2011', $matches] ]
{
$timestamp = mktime[0, 0, 0, [ $matches['month'] - 1 ], $matches['day'], $matches['year']];
}
5 không được cung cấp. Phân tích chuỗi ngày được xác định theo định dạng ngày và giờ và có một số cân nhắc tinh tế. Xem xét các chi tiết đầy đủ có được khuyến nghị mạnh mẽ.Cảnh báo
Dấu thời gian UNIX mà hàm này trả về không chứa thông tin về múi giờ. Để thực hiện các tính toán với thông tin ngày/thời gian, bạn nên sử dụng datetimeimmutable có khả năng hơn.DateTimeImmutable.
Mỗi tham số của hàm này sử dụng múi giờ mặc định trừ khi múi giờ được chỉ định trong tham số đó. Hãy cẩn thận không sử dụng các múi giờ khác nhau trong mỗi tham số trừ khi đó là dự định. Xem DATE_DEFAULT_TIMEZONE_GET [] về các cách khác nhau để xác định múi giờ mặc định.date_default_timezone_get[] on the various ways to define the default time zone.
Thông số
if [ preg_match['/^[?P\d+][-\/][?P\d+][-\/][?P\d+]$/', '1/1/2011', $matches] ]
{
$timestamp = mktime[0, 0, 0, [ $matches['month'] - 1 ], $matches['day'], $matches['year']];
}
7Một chuỗi ngày/thời gian. Các định dạng hợp lệ được giải thích trong các định dạng ngày và giờ.
if [ preg_match['/^[?P\d+][-\/][?P\d+][-\/][?P\d+]$/', '1/1/2011', $matches] ]
{
$timestamp = mktime[0, 0, 0, [ $matches['month'] - 1 ], $matches['day'], $matches['year']];
}
5Dấu thời gian được sử dụng làm cơ sở để tính toán ngày tương đối.
Trả về giá trị
Trả về một dấu thời gian về thành công,
if [ preg_match['/^[?P\d+][-\/][?P\d+][-\/][?P\d+]$/', '1/1/2011', $matches] ]
{
$timestamp = mktime[0, 0, 0, [ $matches['month'] - 1 ], $matches['day'], $matches['year']];
}
9 nếu không.if [ preg_match['/^[?P\d+][-\/][?P\d+][-\/][?P\d+]$/', '1/1/2011', $matches] ]
{
$timestamp = mktime[0, 0, 0, [ $matches['month'] - 1 ], $matches['day'], $matches['year']];
}
9 otherwise. Errors/Exceptions
Mỗi cuộc gọi đến hàm ngày/giờ sẽ tạo
$to='23.1.2014-18:16:35'
list[$part1,$part2] = explode['-', $to];
list[$day, $month, $year] = explode['.', $part1];
list[$hours, $minutes,$seconds] = explode[':', $part2];
$timeto = mktime[$hours, $minutes, $seconds, $month, $day, $year];
echo $timeto;
0 nếu múi giờ không hợp lệ. Xem thêm Date_Default_Timezone_set []$to='23.1.2014-18:16:35'
list[$part1,$part2] = explode['-', $to];
list[$day, $month, $year] = explode['.', $part1];
list[$hours, $minutes,$seconds] = explode[':', $part2];
$timeto = mktime[$hours, $minutes, $seconds, $month, $day, $year];
echo $timeto;
0 if the time zone is not valid. See also date_default_timezone_set[]Thay đổi
8.0.0 | 5 bây giờ là vô hiệu. |
Ví dụ
Ví dụ #1 ví dụ Strtotime []strtotime[] example
$to='23.1.2014-18:16:35'
list[$part1,$part2] = explode['-', $to];
list[$day, $month, $year] = explode['.', $part1];
list[$hours, $minutes,$seconds] = explode[':', $part2];
$timeto = mktime[$hours, $minutes, $seconds, $month, $day, $year];
echo $timeto;
2Ví dụ #2 Kiểm tra thất bại
$to='23.1.2014-18:16:35'
list[$part1,$part2] = explode['-', $to];
list[$day, $month, $year] = explode['.', $part1];
list[$hours, $minutes,$seconds] = explode[':', $part2];
$timeto = mktime[$hours, $minutes, $seconds, $month, $day, $year];
echo $timeto;
3$to='23.1.2014-18:16:35'
list[$part1,$part2] = explode['-', $to];
list[$day, $month, $year] = explode['.', $part1];
list[$hours, $minutes,$seconds] = explode[':', $part2];
$timeto = mktime[$hours, $minutes, $seconds, $month, $day, $year];
echo $timeto;
4$to='23.1.2014-18:16:35'
list[$part1,$part2] = explode['-', $to];
list[$day, $month, $year] = explode['.', $part1];
list[$hours, $minutes,$seconds] = explode[':', $part2];
$timeto = mktime[$hours, $minutes, $seconds, $month, $day, $year];
echo $timeto;
5Ghi chú
Ghi chú::
Ngày "tương đối" trong trường hợp này cũng có nghĩa là nếu một thành phần cụ thể của dấu ngày/thời gian không được cung cấp, nó sẽ được lấy nguyên văn từ
5. Đó là,if [ preg_match['/^[?P\d+][-\/][?P\d+][-\/][?P\d+]$/', '1/1/2011', $matches] ] { $timestamp = mktime[0, 0, 0, [ $matches['month'] - 1 ], $matches['day'], $matches['year']]; }
7, nếu chạy vào ngày 31 tháng 5 năm 2022, sẽ được hiểu là$to='23.1.2014-18:16:35' list[$part1,$part2] = explode['-', $to]; list[$day, $month, $year] = explode['.', $part1]; list[$hours, $minutes,$seconds] = explode[':', $part2]; $timeto = mktime[$hours, $minutes, $seconds, $month, $day, $year]; echo $timeto;
8, sẽ tràn vào dấu thời gian vào ngày ____. [Trong một năm bước nhảy, nó sẽ là$to='23.1.2014-18:16:35' list[$part1,$part2] = explode['-', $to]; list[$day, $month, $year] = explode['.', $part1]; list[$hours, $minutes,$seconds] = explode[':', $part2]; $timeto = mktime[$hours, $minutes, $seconds, $month, $day, $year]; echo $timeto;
dd mm yyyy
0.] Sử dụngdd mm yyyy
1 hoặcdd mm yyyy
2 sẽ tránh được vấn đề đó.
Ghi chú::
Ngày "tương đối" trong trường hợp này cũng có nghĩa là nếu một thành phần cụ thể của dấu ngày/thời gian không được cung cấp, nó sẽ được lấy nguyên văn từ
5. Đó là,if [ preg_match['/^[?P\d+][-\/][?P\d+][-\/][?P\d+]$/', '1/1/2011', $matches] ] { $timestamp = mktime[0, 0, 0, [ $matches['month'] - 1 ], $matches['day'], $matches['year']]; }
7, nếu chạy vào ngày 31 tháng 5 năm 2022, sẽ được hiểu là$to='23.1.2014-18:16:35' list[$part1,$part2] = explode['-', $to]; list[$day, $month, $year] = explode['.', $part1]; list[$hours, $minutes,$seconds] = explode[':', $part2]; $timeto = mktime[$hours, $minutes, $seconds, $month, $day, $year]; echo $timeto;
8, sẽ tràn vào dấu thời gian vào ngày ____. [Trong một năm bước nhảy, nó sẽ là$to='23.1.2014-18:16:35' list[$part1,$part2] = explode['-', $to]; list[$day, $month, $year] = explode['.', $part1]; list[$hours, $minutes,$seconds] = explode[':', $part2]; $timeto = mktime[$hours, $minutes, $seconds, $month, $day, $year]; echo $timeto;
dd mm yyyy
0.] Sử dụngdd mm yyyy
1 hoặcdd mm yyyy
2 sẽ tránh được vấn đề đó.
Ghi chú::
Ngày "tương đối" trong trường hợp này cũng có nghĩa là nếu một thành phần cụ thể của dấu ngày/thời gian không được cung cấp, nó sẽ được lấy nguyên văn từ
5. Đó là,if [ preg_match['/^[?P\d+][-\/][?P\d+][-\/][?P\d+]$/', '1/1/2011', $matches] ] { $timestamp = mktime[0, 0, 0, [ $matches['month'] - 1 ], $matches['day'], $matches['year']]; }
7, nếu chạy vào ngày 31 tháng 5 năm 2022, sẽ được hiểu là$to='23.1.2014-18:16:35' list[$part1,$part2] = explode['-', $to]; list[$day, $month, $year] = explode['.', $part1]; list[$hours, $minutes,$seconds] = explode[':', $part2]; $timeto = mktime[$hours, $minutes, $seconds, $month, $day, $year]; echo $timeto;
8, sẽ tràn vào dấu thời gian vào ngày ____. [Trong một năm bước nhảy, nó sẽ là$to='23.1.2014-18:16:35' list[$part1,$part2] = explode['-', $to]; list[$day, $month, $year] = explode['.', $part1]; list[$hours, $minutes,$seconds] = explode[':', $part2]; $timeto = mktime[$hours, $minutes, $seconds, $month, $day, $year]; echo $timeto;
dd mm yyyy
0.] Sử dụngdd mm yyyy
1 hoặcdd mm yyyy
2 sẽ tránh được vấn đề đó.Nếu số lượng của năm được chỉ định ở định dạng hai chữ số, các giá trị giữa 00-69 được ánh xạ tới 2000-2069 và 70-99 đến 1970-1999. Xem các ghi chú dưới đây để biết sự khác biệt có thể trên các hệ thống 32bit [ngày có thể có thể kết thúc vào ngày 2038-01-19 03:14:07].
Ghi chú::
Ngày "tương đối" trong trường hợp này cũng có nghĩa là nếu một thành phần cụ thể của dấu ngày/thời gian không được cung cấp, nó sẽ được lấy nguyên văn từ
5. Đó là,if [ preg_match['/^[?P\d+][-\/][?P\d+][-\/][?P\d+]$/', '1/1/2011', $matches] ] { $timestamp = mktime[0, 0, 0, [ $matches['month'] - 1 ], $matches['day'], $matches['year']]; }
7, nếu chạy vào ngày 31 tháng 5 năm 2022, sẽ được hiểu là$to='23.1.2014-18:16:35' list[$part1,$part2] = explode['-', $to]; list[$day, $month, $year] = explode['.', $part1]; list[$hours, $minutes,$seconds] = explode[':', $part2]; $timeto = mktime[$hours, $minutes, $seconds, $month, $day, $year]; echo $timeto;
8, sẽ tràn vào dấu thời gian vào ngày ____. [Trong một năm bước nhảy, nó sẽ là$to='23.1.2014-18:16:35' list[$part1,$part2] = explode['-', $to]; list[$day, $month, $year] = explode['.', $part1]; list[$hours, $minutes,$seconds] = explode[':', $part2]; $timeto = mktime[$hours, $minutes, $seconds, $month, $day, $year]; echo $timeto;
dd mm yyyy
0.] Sử dụngdd mm yyyy
1 hoặcdd mm yyyy
2 sẽ tránh được vấn đề đó.DateTime::add[] and DateTime::sub[].
Nếu số lượng của năm được chỉ định ở định dạng hai chữ số, các giá trị giữa 00-69 được ánh xạ tới 2000-2069 và 70-99 đến 1970-1999. Xem các ghi chú dưới đây để biết sự khác biệt có thể trên các hệ thống 32bit [ngày có thể có thể kết thúc vào ngày 2038-01-19 03:14:07].
- Phạm vi hợp lệ của dấu thời gian thường là từ Thứ Sáu, ngày 13 tháng 12 năm 1901 20:45:54 UTC đến Tue, ngày 19 tháng 1 năm 2038 03:14:07 UTC. [Đây là các ngày tương ứng với các giá trị tối thiểu và tối đa cho số nguyên có chữ ký 32 bit.]
- Đối với các phiên bản 64 bit của PHP, phạm vi hợp lệ của dấu thời gian là vô hạn một cách hiệu quả, vì 64 bit có thể biểu thị khoảng 293 tỷ năm theo một trong hai hướng.
- Sử dụng chức năng này cho các hoạt động toán học là không nên. Tốt hơn là sử dụng DateTime :: add [] và datetime :: sub [].
- Xem thêm
- Datetimeimmutable
Datetimeimmutable :: createFromFormat [] - phân tích chuỗi thời gian theo một định dạng được chỉ định