PHP tạo DateTime mới

Các hàm ngày/giờ cho phép bạn lấy ngày và giờ từ máy chủ nơi tập lệnh PHP của bạn chạy. Sau đó, bạn có thể sử dụng các hàm ngày/giờ để định dạng ngày và giờ theo nhiều cách

Ghi chú. Các chức năng này phụ thuộc vào cài đặt ngôn ngữ của máy chủ của bạn. Hãy nhớ xem xét thời gian tiết kiệm ánh sáng ban ngày và năm nhuận khi làm việc với các chức năng này


Cài đặt

Các hàm ngày/giờ PHP là một phần của lõi PHP. Không cần cài đặt để sử dụng các chức năng này


Cấu hình thời gian chạy

Hành vi của các chức năng này bị ảnh hưởng bởi cài đặt trong php. ban đầu

TênMô tảMặc địnhPhiên bản PHPNgày. timezoneMúi giờ mặc định (được sử dụng bởi tất cả các hàm ngày/giờ)""PHP 5. 1 ngày. default_latitudeVĩ độ mặc định (được sử dụng bởi date_sunrise() và date_sunset()) "31. 7667"PHP 5. 0ngày. default_longitudeKinh độ mặc định (được sử dụng bởi date_sunrise() và date_sunset())"35. 2333"PHP5. 0ngày. Sunrise_zenithThiên đỉnh mặt trời mọc mặc định (được sử dụng bởi date_sunrise() và date_sunset())"90. 83"PHP 5. 0ngày. sunset_zenith Đỉnh hoàng hôn mặc định (được sử dụng bởi date_sunrise() và date_sunset())"90. 83"PHP 5. 0

Dấu thời gian là một chuỗi các ký tự, biểu thị ngày và/hoặc thời gian xảy ra một sự kiện nhất định


Kiếm một buổi hẹn hò

Tham số định dạng bắt buộc của hàm date() chỉ định cách định dạng ngày (hoặc thời gian)

Dưới đây là một số ký tự thường được sử dụng cho ngày tháng

  • d - Thể hiện ngày trong tháng (01 đến 31)
  • m - Đại diện cho một tháng (01 đến 12)
  • Y - Đại diện cho một năm (bằng bốn chữ số)
  • l (chữ thường 'L') - Đại diện cho ngày trong tuần

Các ký tự khác, như "/", ". ", hoặc "-" cũng có thể được chèn vào giữa các ký tự để thêm định dạng bổ sung

Ví dụ bên dưới định dạng ngày hôm nay theo ba cách khác nhau

Ví dụ

tiếng vang "Hôm nay là". ngày("Y/m/d"). "
“;
tiếng vang "Hôm nay là". ngày ("Y. m. d"). "
“;
tiếng vang "Hôm nay là". ngày ("Y-m-d"). "
“;
tiếng vang "Hôm nay là". ngày ("l");
?>

Tự mình thử »



Mẹo PHP - Năm bản quyền tự động

Sử dụng hàm date() để tự động cập nhật năm bản quyền trên website của bạn


có được một thời gian

Dưới đây là một số ký tự thường được sử dụng cho thời gian

  • H - định dạng 24 giờ của một giờ (00 đến 23)
  • h - Định dạng 12 giờ của một giờ với các số 0 đứng đầu (01 đến 12)
  • i - Phút có số 0 đứng đầu (00 đến 59)
  • s - Giây có số 0 đứng đầu (00 đến 59)
  • a - Chữ thường Ante meridiem và Post meridiem (sáng hoặc chiều)

Ví dụ dưới đây xuất thời gian hiện tại ở định dạng đã chỉ định

Lưu ý rằng hàm PHP date() sẽ trả về ngày/giờ hiện tại của máy chủ


Nhận múi giờ của bạn

Nếu thời gian bạn nhận được mã không chính xác, có thể là do máy chủ của bạn ở một quốc gia khác hoặc được thiết lập cho một múi giờ khác

Vì vậy, nếu bạn cần thời gian chính xác theo một địa điểm cụ thể, bạn có thể đặt múi giờ bạn muốn sử dụng

Ví dụ bên dưới đặt múi giờ thành "America/New_York", sau đó xuất thời gian hiện tại theo định dạng đã chỉ định

Ví dụ

date_default_timezone_set("Mỹ/New_York");
tiếng vang "Thời gian là". ngày ("h. i. sa");
?>

Tự mình thử »


Tạo một ngày Với mktime()

Tham số dấu thời gian tùy chọn trong hàm date() chỉ định dấu thời gian. Nếu bỏ qua, ngày và giờ hiện tại sẽ được sử dụng (như trong các ví dụ trên)

Hàm PHP mktime() trả về dấu thời gian Unix cho một ngày. Dấu thời gian Unix chứa số giây giữa Kỷ nguyên Unix (ngày 1 tháng 1 năm 1970 00. 00. 00 GMT) và thời gian được chỉ định

cú pháp

mktime(giờ, phút, giây, tháng, ngày, năm)

Ví dụ bên dưới tạo ngày và giờ bằng hàm date() từ một số tham số trong hàm mktime()

Ví dụ

$d=mktime(11, 14, 54, 8, 12, 2014);
echo "Ngày tạo là ". ngày ("Y-m-d h. i. sa", $d);
?>

Tự mình thử »


Tạo một ngày từ một chuỗi với strtotime()

Hàm PHP strtotime() được sử dụng để chuyển đổi chuỗi ngày có thể đọc được của con người 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 giờ GMT)

Là một nhà phát triển, bạn sẽ gặp phải những tình huống mà bạn cần thực hiện một số loại thao tác vào một ngày hoặc giờ. Bạn có thể cần xem hai ngày cách nhau bao xa, thêm vài ngày vào ngày đó hoặc chuyển đổi một chuỗi do người dùng cuối gửi cho chúng tôi thành một thứ mà chúng tôi có thể làm việc với

Là một nhà phát triển thiếu kinh nghiệm, tôi đã không phát minh ra hội chứng ở đây cho những loại vấn đề này mọi lúc. Cuối cùng, tôi đã dành nhiều thời gian để sửa lỗi trong logic xử lý dữ liệu của mình thay vì thêm các tính năng để giải quyết vấn đề của người dùng

Là một nhà phát triển có kinh nghiệm, tôi biết mình có thể tiếp cận với các lớp ngày giờ tích hợp sẵn của PHP hoặc một trong các thư viện được tạo sẵn từ chúng

Trong bài viết này, chúng ta sẽ thảo luận về cách sử dụng các lớp

$date = new DateTime("2022-12-01 00:00:00");
// output: string(19) "2022-12-01 00:00:00"
var_dump($date->format("Y-m-d H:i:s"));
7 tích hợp sẵn của PHP để thực hiện một số thao tác cơ bản trên dữ liệu
$date = new DateTime("2022-12-01 00:00:00");
// output: string(19) "2022-12-01 00:00:00"
var_dump($date->format("Y-m-d H:i:s"));
7

Tạo

Cách dễ nhất để làm việc với một lớp

$date = new DateTime("2022-12-01 00:00:00");
// output: string(19) "2022-12-01 00:00:00"
var_dump($date->format("Y-m-d H:i:s"));
7 là tạo một thể hiện mới của nó. Không có bất kỳ tham số nào, lớp
$date = new DateTime("2022-12-01 00:00:00");
// output: string(19) "2022-12-01 00:00:00"
var_dump($date->format("Y-m-d H:i:s"));
7 sử dụng ngày và giờ tại thời điểm lớp đó được khởi tạo. Nhanh chóng sang một bên, hàm định dạng chuyển đổi
$date = new DateTime("2022-12-01 00:00:00");
// output: string(19) "2022-12-01 00:00:00"
var_dump($date->format("Y-m-d H:i:s"));
7 thành một biểu diễn chuỗi của đối tượng

$date = new DateTime();
// output: string(19) "2022-10-09 18:39:16"
var_dump($date->format("Y-m-d H:i:s"));

Bạn cũng có thể tạo một đối tượng

$date = new DateTime("2022-12-01 00:00:00");
// output: string(19) "2022-12-01 00:00:00"
var_dump($date->format("Y-m-d H:i:s"));
7 cho một ngày và giờ cụ thể

$date = new DateTime("2022-12-01 00:00:00");
// output: string(19) "2022-12-01 00:00:00"
var_dump($date->format("Y-m-d H:i:s"));

PHP cũng có một danh sách dài các định dạng ngày tháng tương đối để bạn có thể tạo một

$date = new DateTime("2022-12-01 00:00:00");
// output: string(19) "2022-12-01 00:00:00"
var_dump($date->format("Y-m-d H:i:s"));
7 bằng cách sử dụng các định dạng dễ đọc hơn như sau

$date = new DateTime("first day of december");
// output: string(19) "2022-12-01 00:00:00"
var_dump($date->format("Y-m-d H:i:s"));

Định dạng ngày

Tôi đã bắt tay ngay vào việc này, nhưng hàm

$date = new DateTime("first day of december");
// output: string(19) "2022-12-01 00:00:00"
var_dump($date->format("Y-m-d H:i:s"));
4 cho phép bạn chuyển đổi một đối tượng
$date = new DateTime("2022-12-01 00:00:00");
// output: string(19) "2022-12-01 00:00:00"
var_dump($date->format("Y-m-d H:i:s"));
7 thành một chuỗi. Điều này hữu ích nếu bạn muốn hiển thị ngày cho người dùng hoặc lưu giá trị vào cơ sở dữ liệu hoặc tệp

Có rất nhiều tùy chọn định dạng có thể tìm thấy trong tài liệu trực tuyến, nhưng nó cũng bao gồm một số định dạng tích hợp sẵn như RSS

$date = new DateTime("2022-12-01 00:00:00");
// output: string(31) "Thu, 01 Dec 2022 00:00:00 +0000"
var_dump($date->format(DateTime::RSS));

Danh sách đầy đủ các định dạng này có thể được tìm thấy trên trang web PHP

https. //www. php. net/manual/en/datetime. định dạng. php

Tạo từ ngày được định dạng

Lúc nào cũng vậy, bạn sẽ phải lấy thông tin đầu vào từ người dùng của mình để làm việc với. Trường hợp xấu nhất cho một ngày là nhận được một cái gì đó như "12/11/08". Bây giờ là ngày 12 tháng 11 năm 2008 hay ngày 11 tháng 12 năm 2008?

Nếu chúng ta chỉ nhập chuỗi này vào một lớp

$date = new DateTime("2022-12-01 00:00:00");
// output: string(19) "2022-12-01 00:00:00"
var_dump($date->format("Y-m-d H:i:s"));
7 mới, chúng ta sẽ có ngày 12 tháng 11

Sử dụng hàm

$date = new DateTime("first day of december");
// output: string(19) "2022-12-01 00:00:00"
var_dump($date->format("Y-m-d H:i:s"));
7, chúng ta có thể chỉ định định dạng của ngày đó

$date = DateTime::createFromFormat(
    "d/m/y h:i:s",
    "11/12/08 08:00:00"
);
// output: string(19) “2008-12-11 08:00:00"
var_dump($date->format("Y-m-d H:i:s"));

Cộng và trừ thời gian

Cho đến thời điểm này, hầu hết các bạn vẫn đang suy nghĩ, vậy hàm

$date = new DateTime("first day of december");
// output: string(19) "2022-12-01 00:00:00"
var_dump($date->format("Y-m-d H:i:s"));
8 có thể làm được những gì mà bạn vừa chỉ cho tôi. Sức mạnh thực sự của lớp
$date = new DateTime("2022-12-01 00:00:00");
// output: string(19) "2022-12-01 00:00:00"
var_dump($date->format("Y-m-d H:i:s"));
7 là nó cho phép bạn điều khiển thời gian dễ dàng như thế nào sau khi bạn tạo ra nó

Ví dụ: nếu bạn muốn thêm một tháng vào ngày hiện tại, bạn có thể sử dụng hàm

$date = new DateTime("2022-12-01 00:00:00");
// output: string(31) "Thu, 01 Dec 2022 00:00:00 +0000"
var_dump($date->format(DateTime::RSS));
0 để làm như vậy

$date = new DateTime("2022-12-01 00:00:00");
$date->modify("+1 month");
// output: string(19) “2023-01-01 00:00:00"
var_dump($date->format("Y-m-d H:i:s"));

Hoặc bạn có thể thêm một năm và một tháng

$date = new DateTime("2022-12-01 00:00:00");
$date->modify("+1 year +1 month");
// output: string(19) “2024-01-01 00:00:00"
var_dump($date->format("Y-m-d H:i:s"));

Hoặc trừ một năm và thêm một tháng

$date = new DateTime("2022-12-01 00:00:00");
$date->modify("-1 year +1 month");
// output: string(19) “2022-01-01 00:00:00"
var_dump($date->format("Y-m-d H:i:s"));

Lớp

$date = new DateTime("2022-12-01 00:00:00");
// output: string(19) "2022-12-01 00:00:00"
var_dump($date->format("Y-m-d H:i:s"));
7 cũng cung cấp chức năng cộng và trừ, vẫn cho phép bạn sửa đổi
$date = new DateTime("2022-12-01 00:00:00");
// output: string(19) "2022-12-01 00:00:00"
var_dump($date->format("Y-m-d H:i:s"));
7, nhưng ở định dạng khó đọc hơn một chút. Hàm yêu cầu bạn tạo một lớp
$date = new DateTime("2022-12-01 00:00:00");
// output: string(31) "Thu, 01 Dec 2022 00:00:00 +0000"
var_dump($date->format(DateTime::RSS));
3 mới và chuyển cho nó một chuỗi được định dạng chính xác như cách bạn muốn thay đổi

$date = new DateTime("2022-12-01 00:00:00");
$date->add(new DateInterval('P1M'));
// output: string(19) “2023-01-01 00:00:00"
var_dump($date->format("Y-m-d H:i:s"));

Tôi khuyên dùng hàm

$date = new DateTime("2022-12-01 00:00:00");
// output: string(31) "Thu, 01 Dec 2022 00:00:00 +0000"
var_dump($date->format(DateTime::RSS));
0 vì nó dễ đọc, nhưng đây là một ví dụ về cách bạn thêm tháng vào ngày

$date = new DateTime("2022-12-01 00:00:00");
$date->add(new DateInterval('P1M'));
// output: string(19) “2023-01-01 00:00:00"
var_dump($date->format("Y-m-d H:i:s"));

Và đây là một cái khác thêm một năm và một tháng

$date = new DateTime("2022-12-01 00:00:00");
// output: string(19) "2022-12-01 00:00:00"
var_dump($date->format("Y-m-d H:i:s"));
0

So sánh hai ngày

Nếu bạn cần xác định sự khác biệt giữa hai ngày, bạn có thể sử dụng hàm

$date = new DateTime("2022-12-01 00:00:00");
// output: string(31) "Thu, 01 Dec 2022 00:00:00 +0000"
var_dump($date->format(DateTime::RSS));
5 để tạo một đối tượng
$date = new DateTime("2022-12-01 00:00:00");
// output: string(31) "Thu, 01 Dec 2022 00:00:00 +0000"
var_dump($date->format(DateTime::RSS));
3, sau đó sẽ cho phép bạn xem sự khác biệt giữa hai ngày đó

$date = new DateTime("2022-12-01 00:00:00");
// output: string(19) "2022-12-01 00:00:00"
var_dump($date->format("Y-m-d H:i:s"));
1

Nó cũng có chức năng

$date = new DateTime("first day of december");
// output: string(19) "2022-12-01 00:00:00"
var_dump($date->format("Y-m-d H:i:s"));
4 cho phép bạn tạo một phiên bản được định dạng của cùng một thông tin. Điều quan trọng cần lưu ý là nó sử dụng dấu phần trăm để hiển thị nơi các biến cần đến và nó cũng thêm tùy chọn %R, tùy chọn này sẽ cho bạn biết liệu có chênh lệch dương hay âm giữa hai ngày

$date = new DateTime("2022-12-01 00:00:00");
// output: string(19) "2022-12-01 00:00:00"
var_dump($date->format("Y-m-d H:i:s"));
2

Múi giờ

Múi giờ có thể là một vấn đề thực sự khó khăn để xử lý, nhưng sử dụng lớp

$date = new DateTime("2022-12-01 00:00:00");
// output: string(19) "2022-12-01 00:00:00"
var_dump($date->format("Y-m-d H:i:s"));
7, làm cho nó dễ dàng hơn rất nhiều. Một trong những điều tôi đã loại trừ cho đến thời điểm này là thực tế là hàm tạo
$date = new DateTime("2022-12-01 00:00:00");
// output: string(19) "2022-12-01 00:00:00"
var_dump($date->format("Y-m-d H:i:s"));
7 có tham số tùy chọn thứ hai xác định múi giờ mà hàm tạo
$date = new DateTime("2022-12-01 00:00:00");
// output: string(19) "2022-12-01 00:00:00"
var_dump($date->format("Y-m-d H:i:s"));
7 tồn tại bên trong. Sau đó, bạn có thể gọi hàm
$date = DateTime::createFromFormat(
    "d/m/y h:i:s",
    "11/12/08 08:00:00"
);
// output: string(19) “2008-12-11 08:00:00"
var_dump($date->format("Y-m-d H:i:s"));
1 để chuyển ngày và giờ đó sang múi giờ mà bạn quan tâm. Quá trình này dễ dàng hơn nhiều so với việc cố gắng tự xác định độ lệch

$date = new DateTime("2022-12-01 00:00:00");
// output: string(19) "2022-12-01 00:00:00"
var_dump($date->format("Y-m-d H:i:s"));
3

$date = DateTime::createFromFormat( "d/m/y h:i:s", "11/12/08 08:00:00" ); // output: string(19) “2008-12-11 08:00:00" var_dump($date->format("Y-m-d H:i:s")); 2 so với $date = new DateTime("2022-12-01 00:00:00"); // output: string(19) "2022-12-01 00:00:00" var_dump($date->format("Y-m-d H:i:s")); 7

PHP cũng hỗ trợ một lớp

$date = DateTime::createFromFormat(
    "d/m/y h:i:s",
    "11/12/08 08:00:00"
);
// output: string(19) “2008-12-11 08:00:00"
var_dump($date->format("Y-m-d H:i:s"));
2 cung cấp một phiên bản không thể thay đổi của ngày tháng. Tôi thích phiên bản không thay đổi bởi vì một chức năng không thể sửa đổi biến và do đó thêm lỗi vào mã của chúng tôi. Sửa đổi một lớp bất biến trả về một phiên bản mới của lớp trong khi vẫn giữ nguyên phiên bản cũ

mở rộng

Bây giờ tôi liên tục sử dụng các thao tác tương tự trên các

$date = new DateTime("2022-12-01 00:00:00");
// output: string(19) "2022-12-01 00:00:00"
var_dump($date->format("Y-m-d H:i:s"));
7 bên trong dự án của mình và tôi ghét sự trùng lặp. Để tránh trùng lặp, tôi tạo lớp
$date = new DateTime("2022-12-01 00:00:00");
// output: string(19) "2022-12-01 00:00:00"
var_dump($date->format("Y-m-d H:i:s"));
7 của riêng mình

$date = new DateTime("2022-12-01 00:00:00");
// output: string(19) "2022-12-01 00:00:00"
var_dump($date->format("Y-m-d H:i:s"));
4

Ví dụ: trong dự án của tôi, tôi có hai loại định dạng mà tôi sử dụng liên tục là định dạng MySQL và phiên bản dành cho người dùng. Tôi tạo một hàm

$date = DateTime::createFromFormat(
    "d/m/y h:i:s",
    "11/12/08 08:00:00"
);
// output: string(19) “2008-12-11 08:00:00"
var_dump($date->format("Y-m-d H:i:s"));
7 và một hàm
$date = DateTime::createFromFormat(
    "d/m/y h:i:s",
    "11/12/08 08:00:00"
);
// output: string(19) “2008-12-11 08:00:00"
var_dump($date->format("Y-m-d H:i:s"));
8 bên trong lớp
$date = new DateTime("2022-12-01 00:00:00");
// output: string(19) "2022-12-01 00:00:00"
var_dump($date->format("Y-m-d H:i:s"));
7 của mình để xử lý việc này

$date = new DateTime("2022-12-01 00:00:00");
// output: string(19) "2022-12-01 00:00:00"
var_dump($date->format("Y-m-d H:i:s"));
5

Nếu bạn muốn hiển thị dữ liệu khác cho người dùng cuối của chúng tôi, chúng tôi chỉ cần thay đổi chức năng tại một điểm

Lặp lại trong một phạm vi ngày

Nếu bạn cần làm việc trên một tập hợp các ngày giữa hai ngày, bạn có thể sử dụng lớp

$date = new DateTime("2022-12-01 00:00:00");
$date->modify("+1 month");
// output: string(19) “2023-01-01 00:00:00"
var_dump($date->format("Y-m-d H:i:s"));
0 để lặp lại mỗi ngày trong phạm vi đó

Ví dụ: nếu bạn cần làm điều gì đó cho mọi ngày trong tháng 12, bạn có thể thực hiện như sau

Ví dụ này chỉ đưa ra ngày, nhưng bạn có thể thực hiện bất kỳ phép tính nào trong vòng lặp

$date = new DateTime("2022-12-01 00:00:00");
$date->modify("+1 month");
// output: string(19) “2023-01-01 00:00:00"
var_dump($date->format("Y-m-d H:i:s"));
1

Làm cách nào để tạo DateTime trong PHP?

Tạo ngày với mktime() . Dấu thời gian Unix chứa số giây giữa Kỷ nguyên Unix (ngày 1 tháng 1 năm 1970 00. 00. 00 GMT) và thời gian được chỉ định.

DateTime mới trong PHP là gì?

Ngày giờ. Hàm format() là một hàm có sẵn trong PHP, được dùng để trả về ngày được định dạng mới theo định dạng đã chỉ định .

Làm cách nào để thêm thời gian trong DateTime PHP?

The Ngày Giờ. Hàm add() là một hàm có sẵn trong PHP được sử dụng để thêm một lượng thời gian (ngày, tháng, năm, giờ, phút và giây) vào đối tượng DateTime đã cho .

Làm cách nào để thêm 1 ngày vào đối tượng DateTime trong PHP?

Nếu bạn có một phiên bản DateTime PHP và muốn thêm một số ngày nhất định vào đó, bạn có thể sử dụng phương thức sửa đổi. Đây là một ví dụ. $date = new DateTime('NOW')->modify('+1 day'); Bây giờ, $date là DateTime 1 ngày trong .