Câu trả lời:
Thời gian sẽ đi theo thời gian máy chủ của bạn. Một cách giải quyết dễ dàng cho việc này là đặt thủ công múi giờ bằng cách sử dụng date_default_timezone_set
trước khi các hàm date()
hoặc time()
được gọi đến.
Tôi đang ở Melbourne, Úc nên tôi có một cái gì đó như thế này:
date_default_timezone_set('Australia/Melbourne');
Hoặc một ví dụ khác là LA - US :
date_default_timezone_set('America/Los_Angeles');
Bạn cũng có thể xem múi giờ của máy chủ hiện tại thông qua:
date_default_timezone_get();
Vì vậy, một cái gì đó như:
$timezone = date_default_timezone_get();
echo "The current server timezone is: " . $timezone;
Vì vậy, câu trả lời ngắn cho câu hỏi của bạn sẽ là:
// Change the line below to your timezone!
date_default_timezone_set('Australia/Melbourne');
$date = date('m/d/Y h:i:s a', time());
Sau đó, tất cả thời gian sẽ là múi giờ bạn vừa đặt :)
// Simply:
$date = date('Y-m-d H:i:s');
// Or:
$date = date('Y/m/d H:i:s');
// This would return the date in the following formats respectively:
$date = '2012-03-06 17:33:07';
// Or
$date = '2012/03/06 17:33:07';
/**
* This time is based on the default server time zone.
* If you want the date in a different time zone,
* say if you come from Nairobi, Kenya like I do, you can set
* the time zone to Nairobi as shown below.
*/
date_default_timezone_set('Africa/Nairobi');
// Then call the date functions
$date = date('Y-m-d H:i:s');
// Or
$date = date('Y/m/d H:i:s');
// date_default_timezone_set() function is however
// supported by PHP version 5.1.0 or above.
Để tham khảo múi giờ, xem Danh sách các múi giờ được hỗ trợ .
Vì PHP 5.2.0
bạn có thể sử dụng DateTime()
lớp:
use \Datetime;
$now = new DateTime();
echo $now->format('Y-m-d H:i:s'); // MySQL datetime format
echo $now->getTimestamp(); // Unix Timestamp -- Since PHP 5.3
Và để xác định timezone
:
$now = new DateTime(null, new DateTimeZone('America/New_York'));
$now->setTimezone(new DateTimeZone('Europe/London')); // Another way
echo $now->getTimezone();
Datatime
không gian tên; Tôi không thể nhớ nếu đó là trường hợp vào năm 2013 và tôi đã không viết bất kỳ mã PHP nào trong nhiều năm. Bất kể, đề nghị của bạn là chính xác, vì vậy cảm ơn một lần nữa.
Tham khảo: Đây là một liên kết
Điều này có thể đáng tin cậy hơn chỉ đơn giản là thêm hoặc trừ số giây trong một ngày hoặc một tháng vào dấu thời gian vì tiết kiệm thời gian ban ngày.
Mã PHP
// Assuming today is March 10th, 2001, 5:16:18 pm, and that we are in the
// Mountain Standard Time (MST) Time Zone
$today = date("F j, Y, g:i a"); // March 10, 2001, 5:16 pm
$today = date("m.d.y"); // 03.10.01
$today = date("j, n, Y"); // 10, 3, 2001
$today = date("Ymd"); // 20010310
$today = date('h-i-s, j-m-y, it is w Day'); // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.'); // it is the 10th day.
$today = date("D M j G:i:s T Y"); // Sat Mar 10 17:16:18 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h'); // 17:03:18 m is month
$today = date("H:i:s"); // 17:16:18
$today = date("Y-m-d H:i:s"); // 2001-03-10 17:16:18 (the MySQL DATETIME format)
Thời gian của PHP () trả về dấu thời gian Unix hiện tại. Với điều này, bạn có thể sử dụng hàm date () để định dạng nó theo nhu cầu của bạn.
$date = date('Format String', time());
Như Paolo đã đề cập trong các ý kiến, lập luận thứ hai là dư thừa. Đoạn mã sau tương đương với đoạn trên:
$date = date('Format String');
Bạn có thể sử dụng $_SERVER['REQUEST_TIME']
biến (có sẵn từ PHP 5.1.0) hoặctime()
hàm để lấy dấu thời gian Unix hiện tại.
time()
hàm độc lập với múi giờ. (Vì vậy, gọi date_default_timezone_set("your-particular-timezone");
trước sẽ không có hiệu lực.)
Bạn có thể sử dụng cả $_SERVER['REQUEST_TIME']
biến hoặc time()
hàm. Cả hai đều trả về dấu thời gian Unix.
Hầu hết thời gian hai giải pháp này sẽ mang lại cùng một Dấu thời gian Unix . Sự khác biệt giữa những điều này là $_SERVER['REQUEST_TIME']
trả về dấu thời gian của yêu cầu máy chủ gần đây nhất vàtime()
trả về thời gian hiện tại. Điều này có thể tạo ra sự khác biệt nhỏ về độ chính xác tùy thuộc vào ứng dụng của bạn, nhưng đối với hầu hết các trường hợp, cả hai giải pháp này đều đủ.
Dựa trên mã ví dụ của bạn ở trên, bạn sẽ muốn định dạng thông tin này một khi bạn có được Dấu thời gian Unix . Thời gian Unix chưa được định dạng trông giống như:1232659628
Vì vậy, để có được một cái gì đó sẽ hoạt động, bạn có thể sử dụng date()
chức năng để định dạng nó.
Một tài liệu tham khảo tốt cho các cách sử dụng date()
hàm được đặt trong Hướng dẫn PHP .
Ví dụ: đoạn mã sau trả về một ngày giống như sau 01/22/2009 04:35:00 pm
::
echo date("m/d/Y h:i:s a", time());
$_SERVER['REQUEST_TIME']
?
Hàm ngày của PHP có thể thực hiện công việc này.
Sự miêu tả:
string date(string $format [, int $timestamp = time()])
Trả về một chuỗi được định dạng theo chuỗi định dạng đã cho bằng cách sử dụng dấu thời gian nguyên đã cho hoặc thời gian hiện tại nếu không có dấu thời gian nào được đưa ra.
Ví dụ:
$today = date("F j, Y, g:i a"); // March 10, 2001, 5:16 pm
$today = date("m.d.y"); // 03.10.01
$today = date("j, n, Y"); // 10, 3, 2001
$today = date("Ymd"); // 20010310
$today = date('h-i-s, j-m-y, it is w Day'); // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.'); // it is the 10th day.
$today = date("D M j G:i:s T Y"); // Sat Mar 10 17:16:18 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h'); // 17:03:18 m is month
$today = date("H:i:s"); // 17:16:18
$today = date("Y-m-d H:i:s"); // 2001-03-10 17:16:18 (the MySQL DATETIME format)
$date = new DateTime('now', new DateTimeZone('Asia/Kolkata'));
echo $date->format('d-m-Y H:i:s');
Cập nhật
//Also get am/pm in datetime:
echo $date->format('d-m-Y H:i:s a'); // output 30-12-2013 10:16:15 am
Đối với định dạng ngày, Hàm date () của PHP rất hữu ích.
nó rất đơn giản
echo $ date = date ('Ymd H: i: s');
Đối với lập trình viên PHP mới có thể nhầm lẫn tại sao có rất nhiều phương pháp để có được ngày giờ hiện tại và sử dụng phương pháp nào trong dự án của họ.
1. date
phương thức (PHP 4, PHP 5, PHP 7)
Đây là cách rất phổ biến và rất dễ dàng để có được ngày và thời gian trong php.
// set the default timezone to use. Available since PHP 5.1
date_default_timezone_set('UTC');
// Prints something like: Monday
echo date("l");
// Prints something like: Monday 8th of August 2005 03:12:46 PM
echo date('l jS \of F Y h:i:s A');
// Prints: July 1, 2000 is on a Saturday
echo "July 1, 2000 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2000));
/* use the constants in the format parameter */
// prints something like: Wed, 25 Sep 2013 15:28:57 -0700
echo date(DATE_RFC2822);
// prints something like: 2000-07-01T00:00:00+00:00
echo date(DATE_ATOM, mktime(0, 0, 0, 7, 1, 2000));
Bạn có thể tìm hiểu thêm về nó ở đây
2. DateTime
lớp (PHP 5> = 5.2.0, PHP 7)
Khi bạn muốn sử dụng PHP với OOP, đây là cách tốt nhất để lấy ngày và giờ.
<?php
// Specified date/time in your computer's time zone.
$date = new DateTime('2000-01-01');
echo $date->format('Y-m-d H:i:sP') . "\n";
// Specified date/time in the specified time zone.
$date = new DateTime('2000-01-01', new DateTimeZone('Pacific/Nauru'));
echo $date->format('Y-m-d H:i:sP') . "\n";
// Current date/time in your computer's time zone.
$date = new DateTime();
echo $date->format('Y-m-d H:i:sP') . "\n";
// Current date/time in the specified time zone.
$date = new DateTime(null, new DateTimeZone('Pacific/Nauru'));
echo $date->format('Y-m-d H:i:sP') . "\n";
// Using a UNIX timestamp. Notice the result is in the UTC time zone.
$date = new DateTime('@946684800');
echo $date->format('Y-m-d H:i:sP') . "\n";
// Non-existent values roll over.
$date = new DateTime('2000-02-30');
echo $date->format('Y-m-d H:i:sP') . "\n";
?>
Bạn có thể tìm hiểu thêm về nó ở đây
3. Gói thời gian ngày Carbon
nếu bạn đang sử dụng Trình soạn thảo , Laravel , Symfony hoặc bất kỳ khuôn khổ loại nào thì đây là cách tốt nhất để có được ngày và giờ. Ngoài ra gói này mở rộng lớp DateTime trong php để bạn sử dụng tất cả phương thức trong lớp Datetime. Điều này được xây dựng trong các khung như laravel vì vậy bạn không phải cài đặt riêng.
printf("Right now is %s", Carbon::now()->toDateTimeString());
printf("Right now in Vancouver is %s", Carbon::now('America/Vancouver')); // automatically converted to string
$tomorrow = Carbon::now()->addDay();
$lastWeek = Carbon::now()->subWeek();
// Carbon embed 823 languages:
echo $tomorrow->locale('fr')->isoFormat('dddd, MMMM Do YYYY, h:mm');
echo $tomorrow->locale('ar')->isoFormat('dddd, MMMM Do YYYY, h:mm');
$officialDate = Carbon::now()->toRfc2822String();
$howOldAmI = Carbon::createFromDate(1975, 5, 21)->age;
$noonTodayLondonTime = Carbon::createFromTime(12, 0, 0, 'Europe/London');
$internetWillBlowUpOn = Carbon::create(2038, 01, 19, 3, 14, 7, 'GMT');
if (Carbon::now()->isWeekend()) {
echo 'Party!';
}
echo Carbon::now()->subMinutes(2)->diffForHumans(); // '2 minutes ago'
Bạn có thể tìm hiểu thêm về nó ở đây
Hy vọng điều này sẽ giúp và nếu bạn biết bất kỳ cách nào khác để có được ngày và thời gian thoải mái để chỉnh sửa câu trả lời.
Sử dụng:
$date = date('m/d/Y h:i:s a', time());
Nó hoạt động.
echo date("d-m-Y H:i:sa");
Mã này sẽ lấy ngày và giờ của máy chủ mà mã chạy trên đó.
Bạn cũng có thể sử dụng định dạng này:
$date = date("d-m-Y");
Hoặc là
$date = date("Y-m-d H:i:s");
Theo bài viết Làm thế nào để có được thời gian hiện tại (NOW) với PHP , có hai cách phổ biến để có được ngày hiện tại. Để có được datetime hiện tại (bây giờ) với PHP, bạn có thể sử dụng date
lớp với bất kỳ phiên bản PHP nào hoặc tốt hơn là datetime
lớp có PHP> = 5.2.
Biểu thức định dạng ngày khác nhau có sẵn ở đây.
Biểu thức này sẽ trở lại NGAY trong định dạng Y-m-d H:i:s
.
<?php
echo date('Y-m-d H:i:s');
?>
Biểu thức này sẽ trở lại NGAY trong định dạng Y-m-d H:i:s
.
<?php
$dt = new DateTime();
echo $dt->format('Y-m-d H:i:s');
?>
<?php
// Assuming today is March 10th, 2001, 5:16:18 pm, and that we are in the
// Mountain Standard Time (MST) Time Zone
$today = date("F j, Y, g:i a"); // March 10, 2001, 5:16 pm
$today = date("m.d.y"); // 03.10.01
$today = date("j, n, Y"); // 10, 3, 2001
$today = date("Ymd"); // 20010310
$today = date('h-i-s, j-m-y, it is w Day'); // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.'); // it is the 10th day.
$today = date("D M j G:i:s T Y"); // Sat Mar 10 17:16:18 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h'); // 17:03:18 m is month
$today = date("H:i:s"); // 17:16:18
$today = date("Y-m-d H:i:s"); // 2001-03-10 17:16:18 (the MySQL DATETIME format)
?>
date(format, timestamp)
Các date
hàm trả về một chuỗi được định dạng theo chuỗi định dạng được sử dụng timestamp nguyên nhất định hoặc thời điểm hiện tại nếu không có dấu thời gian được đưa ra. Nói cách khác, timestamp
là tùy chọn và mặc định là giá trị của thời gian ().
Và các tham số là -
định dạng - Bắt buộc. Chỉ định định dạng của dấu thời gian
dấu thời gian - (Tùy chọn) Chỉ định dấu thời gian. Mặc định là ngày giờ hiện tại
Tham số định dạng bắt buộc của date()
hàm chỉ định cách định dạng date (or time)
.
Dưới đây là một số ký tự thường được sử dụng cho ngày:
Các ký tự khác, như "/", ".", or "-"
cũng có thể được chèn giữa các ký tự để thêm định dạng bổ sung.
Ví dụ dưới đây định dạng ngày hôm nay theo ba cách khác nhau:
<?php
echo "Today is " . date("Y/m/d") . "<br>";
echo "Today is " . date("Y.m.d") . "<br>";
echo "Today is " . date("Y-m-d") . "<br>";
echo "Today is " . date("l");
?>
Nếu bạn muốn một khoảng thời gian khác, vui lòng sử dụng:
$tomorrow = mktime(0, 0, 0, date("m") , date("d")+1, date("Y"));
$lastmonth = mktime(0, 0, 0, date("m")-1, date("d"), date("Y"));
$nextyear = mktime(0, 0, 0, date("m"), date("d"), date("Y")+1);
date_default_timezone_set("Asia/Calcutta");
echo date("Y/m/d H:i:s");
Định dạng ngày cũng phụ thuộc:
echo date("d/m/Y H:i:sa"); // 13/04/2017 19:38:15pm
Một cách đơn giản khác là lấy dấu thời gian của ngày và giờ hiện tại. Sử dụng hàm mktime () :
$now = mktime(); // Return timestamp of the current time
Sau đó, bạn có thể chuyển đổi định dạng này sang định dạng ngày khác:
//// Prints something like: Thursday 26th of January 2017 01:12:36 PM
echo date('l jS \of F Y h:i:s A',$now);
Các định dạng ngày khác ở đây: http://php.net/manual/en/feft.date.php
Rất đơn giản
date_default_timezone_set('Asia/Kolkata');
$date = date('m/d/Y H:i:s', time());
// Set the default timezone to use. Available since PHP 5.1
date_default_timezone_set('UTC');
// Prints something like: Monday
echo date("l");
// Prints something like: Monday 8th of August 2016 03:12:46 PM
echo date('l jS \of F Y h:i:s A');
// Prints: July 1, 2016 is on a Saturday
echo "July 1, 2016 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2016));
/* Use the constants in the format parameter */
// Prints something like: Wed, 25 Sep 2013 15:28:57 -0700
echo date(DATE_RFC2822);
// Prints something like: 2016-07-01T00:00:00+00:00
echo date(DATE_ATOM, mktime(0, 0, 0, 7, 1, 2000));
Nếu bạn là người Bangladesh và nếu bạn muốn có được thời gian của Bangladesh thì hãy sử dụng điều này:
$date = new DateTime();
$date->setTimeZone(new DateTimeZone("Asia/Dhaka"));
$get_datetime = $date->format('d.m.Y H:i:s');
Thông thường, chức năng này cho ngày hữu ích cho mọi người: ngày ("Y / m / d");
Nhưng thời gian là một cái gì đó khác nhau, bởi vì chức năng thời gian phụ thuộc vào phiên bản PHP hoặc ngày hệ thống.
Vì vậy, có thể sử dụng nó như thế này để có được múi giờ của chúng ta:
$date = new DateTime('now', new DateTimeZone('Asia/Kolkata'));
echo $date->format('H:m:s');
Chức năng này hiển thị thời gian 24 giờ.
Dưới đây là một số ký tự thường được sử dụng cho thời gian:
a - Chữ thường Ante meridiem và Post meridiem (sáng hoặc chiều)
Nhận múi giờ của bạn
<?php
date_default_timezone_set("America/New_York");
echo "The time is " . date("h:i:sa");
?>
Kiểm tra này (tùy chọn)
<?php
$d = mktime(11, 14, 54, 8, 12, 2014);
echo "Created date is " . date("Y-m-d h:i:sa", $d);
?>
Cho ngày
<?php
echo "Today is " . date("Y/m/d") . ;
echo "Today is " . date("Y.m.d") . ;
echo "Today is " . date("Y-m-d") . ;
echo "Today is " . date("l");
?>
Dưới đây là một số ký tự thường được sử dụng cho ngày:
.
trong là date("Y/m/d") . ;
gì?
$date = date('m/d/Y h:i:s a', time());