Gần đây, tôi đang xây dựng một dự án nhỏ lấy dữ liệu từ Google Analytics và hiển thị số liệu thống kê trang web của bạn ở dạng đơn giản. Một điều tôi muốn làm là hiển thị dữ liệu trong một quý, nhưng biểu đồ theo ngày quá lộn xộn và biểu đồ theo tháng chỉ cho ba điểm, vì vậy tôi muốn vẽ biểu đồ theo tuần. Điều này tốt nhưng dữ liệu do Analytics trả về chỉ cung cấp cho tôi số tuần và vì dự án này nhằm mục đích làm sáng tỏ số liệu thống kê web cho người bình thường nên nó thực sự cần ngày bình thường trên đó
Sử dụng ngày giờ. setISODate
Tôi thấy rằng tiện ích DateTime có phương thức setISODate[] chấp nhận số năm và tuần, đồng thời tạo ngày mà bạn có thể sử dụng như bình thường
$week_start = new DateTime[]; $week_start->setISODate[$year,$week_no]; echo $week_start->format['d-M-Y'];
Bạn cũng có thể làm điều này theo cách khác;
Sử dụng hàm strtotime[] để lấy ngày đầu tuần bằng PHP. Hàm này trả về dấu thời gian của biến thời gian mặc định và sau đó sử dụng hàm date[] để chuyển đổi dấu thời gian ngày thành ngày dễ hiểu.
Hàm strtotime[]. Hàm strtotime[] trả về kết quả theo dấu thời gian bằng cách phân tích cú pháp chuỗi thời gian.
Cú pháp.
strtotime[$EnglishDateTime, $time_now]
Thông số. Hàm strtotime[] chấp nhận hai tham số như đã đề cập ở trên và được mô tả bên dưới
- $EnglishDateTime. Nó chỉ định mô tả ngày giờ bằng văn bản tiếng Anh, đại diện cho ngày hoặc giờ được trả về. Hàm phân tích cú pháp chuỗi và trả về thời gian tính bằng giây. Nó là tham số bắt buộc
- $time_now. Tham số này chỉ định dấu thời gian được sử dụng để tính giá trị trả về. Nó là một tham số tùy chọn
date[]. Hàm date[] trả về định dạng ngày dễ hiểu hơn và con người có thể đọc được.
Cú pháp.
date[ format, timestamp ]
Thông số. Hàm này chấp nhận hai tham số như đã đề cập ở trên và được mô tả bên dưới
- định dạng. Nó chỉ định định dạng cho ngày và giờ mà kết quả sẽ được hiển thị
- dấu thời gian. Đây là biến thời gian mặc định mà từ đó ngày sẽ được tạo
Ghi chú. Trong PHP, tuần bắt đầu bằng Thứ Hai, vì vậy nếu chuỗi thời gian được cung cấp là “tuần này” thì đầu ra sẽ là dấu thời gian của Thứ Hai, có thể đọc được bằng cách chuyển nó qua hàm date[].
chương trình 1. Nhận mặc định ngày đầu tiên của tuần khi chuỗi thời gian là “tuần này”.
php
strtotime[$EnglishDateTime, $time_now]7
strtotime[$EnglishDateTime, $time_now]8
strtotime[$EnglishDateTime, $time_now]9
date[ format, timestamp ]0
date[ format, timestamp ]1
date[ format, timestamp ]2
date[ format, timestamp ]0
date[ format, timestamp ]1
date[ format, timestamp ]2_______23
date[ format, timestamp ]4
date[ format, timestamp ]5
date[ format, timestamp ]6
date[ format, timestamp ]7
date[ format, timestamp ]8
date[ format, timestamp ]9
date[ format, timestamp ]0
strtotime[$EnglishDateTime, $time_now]41
strtotime[$EnglishDateTime, $time_now]42
đầu ra.
strtotime[$EnglishDateTime, $time_now]4
Bây giờ, chủ nhật thường được coi là ngày đầu tiên của một tuần. Vì vậy, trong PHP để lấy Chủ nhật là ngày đầu tiên của tuần, hãy xem xét Chủ nhật của tuần trước. Tức là để lấy ngày đầu tiên [Chủ nhật] của tuần cần lấy Chủ nhật của tuần trước và để lấy ngày đầu tiên [Chủ nhật] của tuần sau cần lấy Chủ nhật của tuần này, v.v.
PHP hỗ trợ lập chỉ mục -ve trong chuỗi thời gian. Vì vậy, để lấy tuần trước, nó có thể sử dụng chuỗi thời gian là “-1 tuần” và để lấy ngày, nó cũng có thể phải bao gồm tên của ngày trong chuỗi thời gian.
Để lấy số tuần ISO [1-53] của một ngày được biểu thị bằng dấu thời gian Unix, hãy sử dụng
date[ format, timestamp ]3 hoặc
date[ format, timestamp ]4
Đối với một ngày được đại diện bởi một phiên bản DateTime, hãy sử dụng
date[ format, timestamp ]5. Lưu ý rằng format[] trả về số tuần không có tiền tố [e. g. 05], vì vậy bạn cần intval để loại bỏ số 0 đứng đầu
Để có được năm có bốn chữ số tương ứng [e. g. 2022], sử dụng
date[ format, timestamp ]6 hoặc
date[ format, timestamp ]7 hoặc
date[ format, timestamp ]8
Đọc thêm về strftime[], idate[] và DateTime. format[] trong hướng dẫn sử dụng PHP
Cách lấy ngày từ số tuần
Để lấy dấu thời gian Unix đại diện cho đầu tuần [Thứ Hai lúc nửa đêm], hãy sử dụng
date[ format, timestamp ]9
$year là năm có 4 chữ số [e. g. 2022] và $week là số tuần theo tiêu chuẩn ISO [1-53]. Cuộc gọi sprintf[] tạo ra một chuỗi tuần ở định dạng ISO 8601, e. g. "2022W01"