Php đếm giây

Nếu bạn thực sự yêu thích các cuộc gọi phương thức linh hoạt của mình và cảm thấy thất vọng bởi dòng thừa hoặc cặp dấu ngoặc xấu cần thiết khi sử dụng hàm tạo, bạn sẽ thích phương thức

use Carbon\Carbon;
69

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00

Chuỗi được truyền tới

use Carbon\Carbon;
70 hoặc tới
use Carbon\Carbon;
71 có thể biểu thị thời gian tương đối (chủ nhật tới, ngày mai, ngày đầu tiên của tháng sau, năm ngoái) hoặc thời gian tuyệt đối (ngày đầu tiên của tháng 12 năm 2008, 2017-01-06). Bạn có thể kiểm tra xem một chuỗi sẽ tạo ra một ngày tương đối hay tuyệt đối với
use Carbon\Carbon;
72

$string = 'first day of next month';
if (strtotime($string) === false) {
    echo "'$string' is not a valid date/time string.";
} elseif (Carbon::hasRelativeKeywords($string)) {
    echo "'$string' is a relative valid date/time string, it will returns different dates depending on the current date.";
} else {
    echo "'$string' is an absolute date/time string, it will always returns the same date.";
}

Để đi cùng với

use Carbon\Carbon;
68, một số trình trợ giúp khởi tạo tĩnh khác tồn tại để tạo các phiên bản được biết đến rộng rãi. Điều duy nhất thực sự cần lưu ý ở đây là ________ 074, ________ 075 và ________ 076, ngoài việc hoạt động như mong đợi, tất cả đều chấp nhận một tham số múi giờ và mỗi giá trị thời gian của chúng được đặt thành
use Carbon\Carbon;
77

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
1

Nhóm người trợ giúp tĩnh tiếp theo là người trợ giúp

use Carbon\Carbon;
78. Hầu hết các hàm tĩnh của
use Carbon\Carbon;
79 cho phép bạn cung cấp nhiều hay ít đối số tùy ý và sẽ cung cấp các giá trị mặc định cho tất cả các hàm khác. Nói chung, các giá trị mặc định là ngày, giờ hoặc múi giờ hiện tại. Các giá trị cao hơn sẽ bao bọc một cách thích hợp nhưng các giá trị không hợp lệ sẽ tạo ra một
use Carbon\Carbon;
80 với một thông báo cung cấp thông tin. Tin nhắn được lấy từ một DateTime. cuộc gọi getLastErrors()

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
5

use Carbon\Carbon;
81 sẽ mặc định thời gian đến bây giờ.
use Carbon\Carbon;
82 sẽ mặc định ngày là hôm nay.
use Carbon\Carbon;
83 sẽ mặc định bất kỳ tham số null nào về giá trị tương ứng hiện tại. Như trước đây,
use Carbon\Carbon;
84 mặc định là múi giờ hiện tại và nếu không thì có thể là một thể hiện DateTimeZone hoặc đơn giản là một giá trị múi giờ chuỗi. Trường hợp đặc biệt duy nhất dành cho
use Carbon\Carbon;
83 có giá trị tối thiểu làm mặc định cho đối số bị thiếu nhưng mặc định cho giá trị hiện tại khi bạn chuyển rõ ràng
use Carbon\Carbon;
86

use Carbon\Carbon;
0

Tạo ngoại lệ xảy ra trên các giá trị âm như vậy nhưng không xảy ra khi tràn, để có ngoại lệ khi tràn, hãy sử dụng

use Carbon\Carbon;
87

use Carbon\Carbon;
1

lưu ý 1. 2018-02-29 cũng có ngoại lệ trong khi 2020-02-29 thì không vì năm 2020 là năm nhuận

Lưu ý 2.

use Carbon\Carbon;
88 cũng tạo ra một ngoại lệ vì thời gian này là một giờ bị bỏ qua bởi thời gian tiết kiệm ánh sáng ban ngày

lưu ý 3. API gốc PHP cho phép xem xét có một năm

use Carbon\Carbon;
89 giữa
use Carbon\Carbon;
90 và
use Carbon\Carbon;
91 ngay cả khi nó không liên quan đến lịch Gregorian. Đó là lý do tại sao các năm thấp hơn 1 sẽ tạo ra một ngoại lệ bằng cách sử dụng
use Carbon\Carbon;
92. Kiểm tra isValid() để phát hiện năm 0

use Carbon\Carbon;
2

use Carbon\Carbon;
93 chủ yếu là trình bao bọc cho hàm php cơ sở DateTime. tạoFromFormat. Sự khác biệt một lần nữa là đối số
use Carbon\Carbon;
84 có thể là một thể hiện DateTimeZone hoặc một giá trị múi giờ chuỗi. Ngoài ra, nếu có lỗi với định dạng, chức năng này sẽ gọi phương thức
use Carbon\Carbon;
95 và sau đó ném một
use Carbon\Carbon;
80 với các lỗi dưới dạng thông báo

use Carbon\Carbon;
3

Bạn có thể kiểm tra xem một ngày có khớp với định dạng cho

use Carbon\Carbon;
93 (e. g. thành phần ngày/giờ, bộ sửa đổi hoặc dấu tách) bằng cách sử dụng
use Carbon\Carbon;
98 hoặc
use Carbon\Carbon;
99 để đảm bảo dữ liệu thực sự đủ để tạo một phiên bản

use Carbon\Carbon;
4

Bạn có thể tạo các phiên bản từ dấu thời gian unix.

use Carbon\Carbon;
000 tạo một phiên bản Carbon bằng dấu thời gian đã cho và cũng sẽ đặt múi giờ hoặc mặc định nó thành múi giờ hiện tại.
use Carbon\Carbon;
001, khác ở chỗ múi giờ sẽ vẫn là UTC (GMT+00. 00), nó tương đương với
use Carbon\Carbon;
002 nhưng nó hỗ trợ int, float hoặc chuỗi chứa một hoặc nhiều số (như số do
use Carbon\Carbon;
003 tạo ra) nên nó cũng có thể đặt micro giây mà không bị mất độ chính xác. Thứ ba,
use Carbon\Carbon;
004, chấp nhận dấu thời gian tính bằng mili giây thay vì giây. Dấu thời gian âm cũng được cho phép

use Carbon\Carbon;
5

Bạn cũng có thể tạo một

use Carbon\Carbon;
005 của một phiên bản Carbon hiện có. Như mong đợi, tất cả các giá trị ngày, giờ và múi giờ đều được sao chép sang phiên bản mới

use Carbon\Carbon;
6

Bạn có thể sử dụng

use Carbon\Carbon;
006 trên phiên bản Carbon hiện tại để nhận phiên bản mới tại cùng múi giờ

use Carbon\Carbon;
7

Cuối cùng, nếu bạn thấy mình kế thừa một phiên bản

use Carbon\Carbon;
007 từ một thư viện khác, đừng lo. Bạn có thể tạo phiên bản ________ 4008 thông qua phương pháp ________ 4009 thân thiện. Hoặc sử dụng phương pháp linh hoạt hơn nữa là
use Carbon\Carbon;
010 có thể trả về một phiên bản Carbon mới từ DateTime, Carbon hoặc từ một chuỗi, nếu không thì nó chỉ trả về null

use Carbon\Carbon;
8

Carbon 2 (yêu cầu PHP >= 7. 1) hỗ trợ hoàn hảo micro giây. Nhưng nếu bạn sử dụng Carbon 1 và PHP <7. 1, hãy đọc phần của chúng tôi về hỗ trợ một phần micro giây

Trước PHP 7. 1 micro giây DateTime không được thêm vào các phiên bản

use Carbon\Carbon;
011 và không thể thay đổi sau đó, điều này có nghĩa là

use Carbon\Carbon;
9

Để khắc phục hạn chế này trong Carbon, chúng tôi thêm micro giây khi gọi

use Carbon\Carbon;
012 trong PHP < 7. 1, nhưng tính năng này có thể bị tắt theo yêu cầu (không có tác dụng trong PHP >= 7. 1)

use Carbon\Carbon;
00

Bạn có bao giờ cần lặp lại một số ngày để tìm ngày sớm nhất hoặc mới nhất không?

use Carbon\Carbon;
01

Giá trị tối thiểu và tối đa chủ yếu phụ thuộc vào hệ thống (32 hoặc 64 bit)

Với hệ điều hành 32-bit hoặc phiên bản 32-bit của PHP (bạn có thể kiểm tra nó trong PHP với

use Carbon\Carbon;
013), giá trị tối thiểu là dấu thời gian 0-unix (1970-01-01 00. 00. 00) và giá trị lớn nhất là dấu thời gian được cung cấp bởi hằng số
use Carbon\Carbon;
014

Với hệ điều hành 64 bit và phiên bản PHP 64 bit, tối thiểu là 01-01-01 00. 00. 00 và tối đa là 9999-12-31 23. 59. 59. Thậm chí có thể sử dụng năm âm lên đến -9999 nhưng lưu ý rằng bạn có thể không có kết quả chính xác với một số thao tác vì năm 0 tồn tại trong PHP nhưng không có trong lịch Gregorian

Với Carbon 2, quá trình bản địa hóa đã thay đổi rất nhiều, 750 ngôn ngữ mới được hỗ trợ và giờ đây chúng tôi nhúng các định dạng ngôn ngữ, tên ngày, tên tháng, hậu tố thứ tự, kinh tuyến, bắt đầu tuần, v.v. Mặc dù Carbon 1 cung cấp hỗ trợ một phần và dựa vào các gói ngôn ngữ và lớp IntlDateFormatter của bên thứ ba để dịch nâng cao, giờ đây bạn được hưởng lợi từ hỗ trợ quốc tế hóa rộng rãi. Bạn vẫn sử dụng Carbon 1 chứ? . Nếu không, bạn có thể tìm thấy tài liệu Bản địa hóa phiên bản 1 bằng cách nhấp vào đây

Thật không may, lớp cơ sở DateTime không có bất kỳ hỗ trợ bản địa hóa nào. Để bắt đầu hỗ trợ bản địa hóa, một phương pháp

use Carbon\Carbon;
015 đã được thêm vào. Việc triển khai thực hiện cuộc gọi đến strftime bằng cách sử dụng dấu thời gian của phiên bản hiện tại. Nếu lần đầu tiên bạn đặt ngôn ngữ hiện tại bằng hàm PHP setlocale() thì chuỗi được trả về sẽ được định dạng theo ngôn ngữ chính xác

use Carbon\Carbon;
02

use Carbon\Carbon;
016 cũng đã được bản địa hóa. Bạn có thể đặt ngôn ngữ Carbon bằng cách sử dụng hàm tĩnh
use Carbon\Carbon;
017 và nhận cài đặt hiện tại với
use Carbon\Carbon;
018

use Carbon\Carbon;
03

Hoặc bạn có thể cô lập một số mã với một ngôn ngữ nhất định

use Carbon\Carbon;
04

Một số ngôn ngữ yêu cầu in mã hóa utf8 (chủ yếu là các gói ngôn ngữ không kết thúc bằng

use Carbon\Carbon;
019). Trong trường hợp này, bạn có thể sử dụng phương thức tĩnh
use Carbon\Carbon;
020 để mã hóa kết quả của lệnh gọi formatLocalized() thành bộ ký tự utf8

use Carbon\Carbon;
05

trên Linux
Nếu bạn gặp sự cố với bản dịch, hãy kiểm tra các ngôn ngữ được cài đặt trong hệ thống của bạn (cục bộ và sản xuất).
______4021 để liệt kê các ngôn ngữ được bật.
______4022 để cài đặt ngôn ngữ mới.
____4023 để xuất bản tất cả ngôn ngữ đã bật.
Và khởi động lại hệ thống của bạn.

kể từ 2. 9. 0, bạn có thể dễ dàng tùy chỉnh bản dịch

use Carbon\Carbon;
06

Bạn có thể sử dụng ngôn ngữ dự phòng bằng cách chuyển theo thứ tự nhiều ngôn ngữ tới

use Carbon\Carbon;
024

use Carbon\Carbon;
07

Trong ví dụ trên, nó sẽ cố gắng tìm các bản dịch trong "xx" theo thứ tự ưu tiên, sau đó là "xy" nếu thiếu, sau đó là "es", vì vậy ở đây, bạn lấy "Xday" từ "xx", "Yday" từ "

Lưu ý rằng bạn cũng có thể sử dụng một trình dịch khác với

use Carbon\Carbon;
025 miễn là trình dịch đã cho thực hiện
use Carbon\Carbon;
026. Và bạn có thể nhận trình dịch mặc định chung bằng cách sử dụng
use Carbon\Carbon;
027 (và
use Carbon\Carbon;
028 và
use Carbon\Carbon;
029 cho ngôn ngữ dự phòng, setFallbackLocale có thể được gọi nhiều lần để nhận nhiều ngôn ngữ dự phòng) nhưng vì những phương pháp đó sẽ thay đổi hành vi trên toàn cầu (bao gồm cả thư viện của bên thứ ba mà bạn có thể có . Bạn nên tùy chỉnh bản dịch bằng ngôn ngữ tùy chỉnh như trong ví dụ trên

Carbon nhúng trình dịch mặc định mở rộng Symfony\Component\Translation\Translator Bạn có thể kiểm tra tại đây các phương thức chúng tôi đã thêm vào nó

Vì vậy, sự hỗ trợ của một ngôn ngữ cho

use Carbon\Carbon;
030, các trình thu thập dữ liệu như
use Carbon\Carbon;
031,
use Carbon\Carbon;
032 và các biến thể ngắn được điều khiển bởi các ngôn ngữ được cài đặt trong hệ điều hành của bạn. Đối với các bản dịch khác, nó được hỗ trợ nội bộ nhờ cộng đồng Carbon. Bạn có thể kiểm tra những gì được hỗ trợ bằng các phương pháp sau

use Carbon\Carbon;
08

Vì vậy, đây là cách mới được đề xuất để xử lý quá trình quốc tế hóa với Carbon

use Carbon\Carbon;
09

Phương pháp

use Carbon\Carbon;
033 chỉ thay đổi ngôn ngữ cho phiên bản hiện tại và được ưu tiên hơn cài đặt chung. Chúng tôi đề xuất cho bạn phương pháp này để bạn không gặp xung đột với những nơi khác hoặc thư viện của bên thứ ba có thể sử dụng Carbon. Tuy nhiên, để tránh gọi
use Carbon\Carbon;
033 mỗi lần, bạn có thể sử dụng các nhà máy

use Carbon\Carbon;
00

Bạn có thể gọi bất kỳ phương thức Carbon tĩnh nào trên một nhà máy (thực hiện, bây giờ, hôm qua, ngày mai, phân tích cú pháp, tạo, v.v. ) Factory (và FactoryImmutable tạo phiên bản CarbonImmutable) là cách tốt nhất để giữ mọi thứ ngăn nắp và tách biệt. Thông thường, chúng tôi khuyên bạn nên làm việc với ngày UTC, sau đó áp dụng cục bộ (hoặc với nhà máy) múi giờ và ngôn ngữ trước khi hiển thị ngày cho người dùng

Những gì nhà máy thực sự làm là sử dụng tên phương thức làm hàm tạo tĩnh, sau đó gọi phương thức

use Carbon\Carbon;
035, đây là cách để nhóm trong một cài đặt cuộc gọi về ngôn ngữ, múi giờ, tràn tháng/năm, v.v. (Xem tài liệu tham khảo cho danh sách đầy đủ. )

use Carbon\Carbon;
01

use Carbon\Carbon;
035 cũng cho phép chuyển macro cục bộ

use Carbon\Carbon;
02

Cài đặt gốc có thể được thay đổi sau đó với

use Carbon\Carbon;
037 hoặc để hợp nhất cài đặt mới với cài đặt hiện có
use Carbon\Carbon;
038 và lớp để tạo có thể được khởi tạo làm đối số thứ hai của cấu trúc, sau đó được thay đổi sau với
use Carbon\Carbon;
039

use Carbon\Carbon;
03

Trước đây đã có

use Carbon\Carbon;
040 đặt ngôn ngữ trên toàn cầu. Nhưng đối với các trình cài đặt tĩnh khác của chúng tôi, chúng tôi không khuyến khích bạn sử dụng nó. Nó phá vỡ nguyên tắc cô lập vì cấu hình sẽ áp dụng cho mọi lớp sử dụng Carbon

Bạn cũng có thể biết phương pháp

use Carbon\Carbon;
041 từ Carbon 1. Phương pháp này vẫn hoạt động tương tự trong Carbon 2 nhưng tốt hơn bạn nên sử dụng
use Carbon\Carbon;
042 để thay thế

use Carbon\Carbon;
043 sử dụng định dạng ISO thay vì định dạng dành riêng cho PHP và sử dụng các bản dịch bên trong thay vì các gói ngôn ngữ bạn cần cài đặt trên mọi máy mà bạn triển khai ứng dụng của mình. Phương thức
use Carbon\Carbon;
044 tương thích với phương thức định dạng momentjs, điều đó có nghĩa là bạn có thể sử dụng các chuỗi định dạng giống như bạn có thể đã sử dụng tại thời điểm từ giao diện người dùng hoặc nút. js. Dưới đây là một số ví dụ

use Carbon\Carbon;
04

Bạn cũng có thể tạo ngày từ các chuỗi có định dạng ISO

use Carbon\Carbon;
05

use Carbon\Carbon;
045 sử dụng các phương pháp theo ngữ cảnh cho tên ngày và tên tháng vì chúng có thể có nhiều dạng trong một số ngôn ngữ, xem các ví dụ sau

use Carbon\Carbon;
06

Dưới đây là danh sách đầy đủ các sản phẩm thay thế có sẵn (ví dụ được đưa ra với

use Carbon\Carbon;
046)

MãVí dụMô tảOD5Số ngày với các số thay thế, chẳng hạn như 三 cho 3 nếu ngôn ngữ là ja_JPOM1Số tháng với các số thay thế, chẳng hạn như ၀၂ cho 2 nếu ngôn ngữ là my_MMOY2017Số năm với các số thay thế, chẳng hạn như ۱۹۹۸ cho 1998 nếu ngôn ngữ là faOH1724, số giờ với các số thay thế, chẳng hạn như ႑႓ cho . 00Bù múi giờ HH. mmZZ+0000Bù múi giờ HHmm

Một số định dạng macro cũng có sẵn. Dưới đây là ví dụ về từng ngôn ngữ

Codeenfrjahr_______4048
______4049
______4050

use Carbon\Carbon;
051

use Carbon\Carbon;
052

use Carbon\Carbon;
053

use Carbon\Carbon;
054

use Carbon\Carbon;
055

use Carbon\Carbon;
056

use Carbon\Carbon;
057

use Carbon\Carbon;
051
______4053
use Carbon\Carbon;
055
use Carbon\Carbon;
057

Khi bạn sử dụng macro- .

use Carbon\Carbon;
07

Một phương pháp dịch hữu ích khác là ________ 4063

use Carbon\Carbon;
08

Nếu bạn biết khoảnh khắc, thì nó cũng hoạt động theo cách tương tự. Bạn có thể chuyển ngày tham chiếu làm đối số thứ hai, ngày khác hiện được sử dụng. Và bạn có thể tùy chỉnh một hoặc nhiều định dạng bằng cách sử dụng đối số thứ hai (các định dạng để chuyển dưới dạng khóa mảng là. sameDay, nextDay, next Week, last Day, last Week và sameElse)

use Carbon\Carbon;
09

Nhấp vào đây để xem tổng quan về 280 ngôn ngữ (và 823 biến thể khu vực) được hỗ trợ bởi phiên bản Carbon cuối cùng

aaAfar✅✅✅✅✅✅✅✅afAfrikaans✅✅❌✅✅✅✅❌agqAghem✅✅✅✅✅❌❌✅agrAguaruna✅✅✅✅✅✅✅✅akaAkan✅✅✅✅✅✅✅✅am Amharic✅✅✅✅

Nếu bạn có thể thêm các bản dịch bị thiếu hoặc ngôn ngữ bị thiếu, vui lòng truy cập công cụ dịch, rất mong nhận được sự giúp đỡ của bạn

Lưu ý rằng nếu bạn sử dụng Laravel 5. 5+, ngôn ngữ sẽ được đặt tự động theo lần thực thi

use Carbon\Carbon;
064 cuối cùng hiện tại. Vì vậy,
use Carbon\Carbon;
065,
use Carbon\Carbon;
044,
use Carbon\Carbon;
067 và các thuộc tính được bản địa hóa như
use Carbon\Carbon;
068 hoặc
use Carbon\Carbon;
069 sẽ được bản địa hóa một cách rõ ràng

Theo mặc định, mỗi phiên bản Carbon, CarbonImmutable, CarbonInterval hoặc CarbonPeriod được liên kết với phiên bản

use Carbon\Carbon;
070 theo bộ ngôn ngữ của nó. Bạn có thể lấy và/hoặc thay đổi nó bằng cách sử dụng ________ 4071/______ 4072

Nếu bạn thích mẫu

use Carbon\Carbon;
073, bạn có thể sử dụng
use Carbon\Carbon;
074 hoạt động giống như
use Carbon\Carbon;
075 nhưng dịch chuỗi bằng ngôn ngữ hiện tại

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
410

Được cảnh báo rằng một số chữ cái như

use Carbon\Carbon;
076 không được hỗ trợ vì chúng không thể dịch một cách an toàn và
use Carbon\Carbon;
067 cung cấp cú pháp ngắn hơn nhưng ít khả năng hơn so với
use Carbon\Carbon;
042

Bạn có thể tùy chỉnh hành vi của phương thức

use Carbon\Carbon;
075 để sử dụng bất kỳ phương thức nào khác hoặc phương thức tùy chỉnh thay vì phương thức gốc từ lớp DateTime của PHP

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
411

Bạn có thể dịch một chuỗi từ ngôn ngữ này sang ngôn ngữ khác bằng cách sử dụng bản dịch ngày có sẵn trong Carbon

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
412

Nếu ngôn ngữ đầu vào không được chỉ định, thay vào đó,

use Carbon\Carbon;
018 sẽ được sử dụng. Nếu ngôn ngữ đầu ra không được chỉ định, thì thay vào đó, hãy sử dụng
use Carbon\Carbon;
081. Bạn cũng có thể dịch bằng cách sử dụng ngôn ngữ của phiên bản với

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
413

Bạn có thể trực tiếp sử dụng chuỗi trong bất kỳ ngôn ngữ nào để tạo đối tượng ngày tháng với

use Carbon\Carbon;
082

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
414

Bạn cũng có thể sử dụng "hôm nay", "hôm nay lúc 8 giờ. 00", "hôm qua", "sau ngày mai", v.v. tương đương trong ngôn ngữ nhất định

Hoặc với định dạng tùy chỉnh bằng cách sử dụng

use Carbon\Carbon;
083 (sử dụng mẫu
use Carbon\Carbon;
073 để thay thế)

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
415

Phương pháp tương đương sử dụng định dạng ISO là

use Carbon\Carbon;
085

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
416

Để nhận một số thông tin thú vị về ngôn ngữ (chẳng hạn như tên ISO hoàn chỉnh hoặc tên bản địa, vùng (ví dụ: được hiển thị trong bộ chọn ngôn ngữ), bạn có thể sử dụng

use Carbon\Carbon;
086

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
417

Xin hãy để tôi cảm ơn một số dự án đã giúp chúng tôi rất nhiều để hỗ trợ nhiều ngôn ngữ hơn và các tính năng quốc tế hóa

  • jensegers/ngày. nhiều tính năng trong dự án này mở rộng Carbon trước khi có trong chính Carbon
  • khoảnh khắc. nhiều tính năng được lấy cảm hứng từ momentjs và được tạo ra để tương thích với dự án cặp mặt trước này
  • glibc là một cơ sở vững chắc để thêm và kiểm tra ngôn ngữ
  • svenfuchs/rails-i18n cũng giúp thêm và kiểm tra ngôn ngữ
  • Chúng tôi đã sử dụng quả địa cầu. com rất nhiều để kiểm tra bản dịch và điền vào chỗ trống

Các phương pháp thử nghiệm cho phép bạn đặt phiên bản Carbon (thực hoặc giả) được trả về khi phiên bản "hiện tại" được tạo. Ví dụ được cung cấp sẽ được sử dụng khi truy xuất bất kỳ thời gian tương đối nào từ Carbon (bây giờ, hôm nay, hôm qua, tháng tới, v.v. )

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
418

Một ví dụ đầy đủ ý nghĩa hơn

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
419

Các cụm từ tương đối cũng được mô phỏng theo trường hợp "bây giờ" đã cho

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
620

Kể từ Carbon 2. 56. 0,

use Carbon\Carbon;
087 không còn ảnh hưởng đến múi giờ của phiên bản
use Carbon\Carbon;
088 mà bạn sẽ nhận được. Điều này được thực hiện bởi vì trong đời thực,
use Carbon\Carbon;
088 trả về một ngày có múi giờ từ
use Carbon\Carbon;
090. Và các bài kiểm tra nên phản ánh điều này

Bạn có thể sử dụng ________ 4091 để mô phỏng thời gian và thay đổi múi giờ mặc định bằng cách sử dụng ________ 4092

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
621

Danh sách các từ được coi là sửa đổi tương đối là

  • +
  • -
  • trước kia
  • Đầu tiên
  • tiếp theo
  • Cuối cùng
  • đây
  • hôm nay
  • ngày mai
  • hôm qua

Xin lưu ý rằng tương tự như các phương thức next(), previous() và modify(), một số công cụ sửa đổi tương đối này sẽ đặt thời gian thành 00. 00. 00

Cả

use Carbon\Carbon;
093 và
use Carbon\Carbon;
094 đều có thể lấy múi giờ làm đối số thứ hai

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
622

Xem Carbonite để biết thêm các tính năng thử nghiệm Carbon nâng cao

Carbonite là một gói bổ sung mà bạn có thể dễ dàng cài đặt bằng trình soạn nhạc.

use Carbon\Carbon;
095 sau đó sử dụng để du hành thời gian trong các bài kiểm tra đơn vị của bạn khi bạn kể một câu chuyện

Thêm nhập khẩu

use Carbon\Carbon;
096 ở đầu tệp

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
623

Các getters được triển khai thông qua phương thức

use Carbon\Carbon;
097 của PHP. Điều này cho phép bạn truy cập giá trị như thể đó là thuộc tính chứ không phải là lệnh gọi hàm

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
624

Các setters sau đây được triển khai thông qua phương thức

use Carbon\Carbon;
098 của PHP. Thật tốt khi lưu ý ở đây rằng không có setters nào, ngoại trừ rõ ràng là đặt múi giờ rõ ràng, sẽ thay đổi múi giờ của thể hiện. Cụ thể, việc đặt dấu thời gian sẽ không đặt múi giờ tương ứng thành UTC

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
625

Nếu bạn đã quen thuộc với momentjs, bạn sẽ thấy các phương pháp tuần đều hoạt động giống nhau. Hầu hết chúng đều có biến thể iso{Method}. Các phương thức tuần tuân theo các quy tắc của ngôn ngữ hiện tại (ví dụ: với en_US, ngôn ngữ mặc định, ngày đầu tuần là Chủ nhật và tuần đầu tiên của năm là tuần chứa ngày 1 tháng 1). Các phương pháp của ISO tuân theo tiêu chuẩn ISO 8601, nghĩa là các tuần bắt đầu bằng Thứ Hai và tuần đầu tiên của năm là tuần chứa ngày 4 tháng Giêng

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
626

Bạn có thể gọi bất kỳ đơn vị cơ sở nào dưới dạng setter hoặc một số setters được nhóm

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
627

Bạn cũng có thể đặt ngày và giờ riêng biệt với các đối tượng DateTime/Carbon khác

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
628

Hàm PHP

use Carbon\Carbon;
099 được triển khai. Điều này đã được thực hiện như một số hệ thống bên ngoài (ví dụ:. Twig) xác thực sự tồn tại của một thuộc tính trước khi sử dụng nó. Điều này được thực hiện bằng cách sử dụng phương pháp
use Carbon\Carbon;
000 hoặc
use Carbon\Carbon;
001. Bạn có thể đọc thêm về những điều này trên trang web PHP. __isset(), ngay lập tức(), trống()

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
629

Tất cả các phương thức

use Carbon\Carbon;
002 có sẵn đều dựa trên phương thức lớp cơ sở DateTime. định dạng(). Bạn sẽ nhận thấy phương thức
use Carbon\Carbon;
003 được xác định cho phép in phiên bản Carbon dưới dạng chuỗi thời gian ngày tháng đẹp mắt khi được sử dụng trong ngữ cảnh chuỗi

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
0

Bạn cũng có thể đặt định dạng __toString() mặc định (mặc định là

use Carbon\Carbon;
004) được sử dụng khi xảy ra hiện tượng tung hứng kiểu

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
1

Là một phần của cài đặt,

use Carbon\Carbon;
005 cũng có thể được sử dụng trong các nhà máy. Nó cũng có thể là một bao đóng, vì vậy bạn có thể chạy bất kỳ mã nào trên chuỗi truyền

Nếu bạn sử dụng Carbon 1 hoặc muốn áp dụng nó trên toàn cầu làm định dạng mặc định, bạn có thể sử dụng

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
2

Ghi chú. Để được hỗ trợ bản địa hóa, hãy xem phần Bản địa hóa

Sau đây là các hàm bao cho các định dạng phổ biến được cung cấp trong lớp DateTime

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
3____14

Bạn có thể sử dụng phương pháp

use Carbon\Carbon;
006 để chuyển đổi nhiều thứ thành một phiên bản
use Carbon\Carbon;
008 dựa trên một phiên bản nguồn nhất định được sử dụng làm tài liệu tham khảo khi cần. Nó trả về một thể hiện mới

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
5

So sánh đơn giản được cung cấp thông qua các chức năng sau. Hãy nhớ rằng việc so sánh được thực hiện theo múi giờ UTC nên mọi thứ không phải lúc nào cũng như vẻ ngoài của chúng

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
6

Các phương thức đó sử dụng phép so sánh tự nhiên do PHP

use Carbon\Carbon;
008 cung cấp, vì vậy tất cả chúng sẽ bỏ qua mili/micro giây trước PHP 7. 1, sau đó tính đến chúng bắt đầu bằng 7. 1

Để xác định xem phiên bản hiện tại có nằm giữa hai phiên bản khác hay không, bạn có thể sử dụng phương pháp có tên thích hợp là

use Carbon\Carbon;
009 (hoặc bí danh
use Carbon\Carbon;
010). Tham số thứ ba cho biết liệu có nên thực hiện so sánh bằng. Giá trị mặc định là true xác định xem nó nằm giữa hay bằng các ranh giới

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
7

ồ. Bạn đã quên min() và max()? . Điều đó cũng được bao phủ bởi các phương thức

use Carbon\Carbon;
011 và
use Carbon\Carbon;
012 có tên phù hợp hoặc bí danh
use Carbon\Carbon;
013 và
use Carbon\Carbon;
014. Như thường lệ, tham số mặc định hiện tại nếu null được chỉ định

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
8

Để xử lý các trường hợp được sử dụng nhiều nhất, có một số chức năng trợ giúp đơn giản mà hy vọng là rõ ràng từ tên của chúng. Đối với các phương thức so sánh với

use Carbon\Carbon;
68 (ví dụ:. isToday()) theo một cách nào đó, thì
use Carbon\Carbon;
68 được tạo trong cùng múi giờ với ví dụ

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
9

DateTime mặc định cung cấp một số phương pháp khác nhau để dễ dàng cộng và trừ thời gian. Có

use Carbon\Carbon;
017,
use Carbon\Carbon;
018 và
use Carbon\Carbon;
019.
use Carbon\Carbon;
020 là phiên bản nâng cao của
use Carbon\Carbon;
017 có thể lấy chuỗi định dạng ngày/giờ kỳ diệu,
use Carbon\Carbon;
022, nó phân tích cú pháp và áp dụng sửa đổi trong khi
use Carbon\Carbon;
018 và
use Carbon\Carbon;
019 có thể lấy cùng một loại chuỗi, khoảng thời gian (
use Carbon\Carbon;
025 hoặc
use Carbon\Carbon;
026) hoặc số + đơn vị . Nhưng bạn vẫn có thể truy cập các phương thức gốc của lớp
use Carbon\Carbon;
027 bằng cách sử dụng
use Carbon\Carbon;
028 và
use Carbon\Carbon;
029

$string = 'first day of next month';
if (strtotime($string) === false) {
    echo "'$string' is not a valid date/time string.";
} elseif (Carbon::hasRelativeKeywords($string)) {
    echo "'$string' is a relative valid date/time string, it will returns different dates depending on the current date.";
} else {
    echo "'$string' is an absolute date/time string, it will always returns the same date.";
}
0

Để giải trí, bạn cũng có thể chuyển các giá trị âm cho

use Carbon\Carbon;
030, thực tế đó là cách triển khai
use Carbon\Carbon;
031

P. S. Đừng lo lắng nếu bạn quên và sử dụng

use Carbon\Carbon;
032 hoặc
use Carbon\Carbon;
033, tôi hỗ trợ bạn;)

Theo mặc định, Carbon dựa trên hành vi DateTime của lớp cha bên dưới PHP. Kết quả là việc cộng hoặc trừ các tháng có thể bị tràn, ví dụ

$string = 'first day of next month';
if (strtotime($string) === false) {
    echo "'$string' is not a valid date/time string.";
} elseif (Carbon::hasRelativeKeywords($string)) {
    echo "'$string' is a relative valid date/time string, it will returns different dates depending on the current date.";
} else {
    echo "'$string' is an absolute date/time string, it will always returns the same date.";
}
1

Kể từ Carbon 2, bạn có thể đặt hành vi tràn cục bộ cho từng phiên bản

$string = 'first day of next month';
if (strtotime($string) === false) {
    echo "'$string' is not a valid date/time string.";
} elseif (Carbon::hasRelativeKeywords($string)) {
    echo "'$string' is a relative valid date/time string, it will returns different dates depending on the current date.";
} else {
    echo "'$string' is an absolute date/time string, it will always returns the same date.";
}
2

Điều này sẽ áp dụng cho các phương pháp

use Carbon\Carbon;
034,
use Carbon\Carbon;
035,
use Carbon\Carbon;
036,
use Carbon\Carbon;
037 và các phương pháp quý tương đương. Nhưng nó sẽ không áp dụng cho các đối tượng khoảng cách hoặc chuỗi như
use Carbon\Carbon;
038 hoặc
use Carbon\Carbon;
039

Trình trợ giúp tĩnh tồn tại nhưng không được dùng nữa. Nếu bạn chắc chắn cần áp dụng cài đặt chung hoặc hoạt động với phiên bản 1 của Carbon, hãy kiểm tra phần trợ giúp tĩnh tràn

Bạn có thể ngăn tràn với

use Carbon\Carbon;
040

$string = 'first day of next month';
if (strtotime($string) === false) {
    echo "'$string' is not a valid date/time string.";
} elseif (Carbon::hasRelativeKeywords($string)) {
    echo "'$string' is a relative valid date/time string, it will returns different dates depending on the current date.";
} else {
    echo "'$string' is an absolute date/time string, it will always returns the same date.";
}
3

Phương pháp

use Carbon\Carbon;
041 cho phép bạn biết nếu tràn hiện đang được kích hoạt

$string = 'first day of next month';
if (strtotime($string) === false) {
    echo "'$string' is not a valid date/time string.";
} elseif (Carbon::hasRelativeKeywords($string)) {
    echo "'$string' is a relative valid date/time string, it will returns different dates depending on the current date.";
} else {
    echo "'$string' is an absolute date/time string, it will always returns the same date.";
}
4

Từ phiên bản 1. 23. 0, kiểm soát tràn cũng có sẵn trên các năm

$string = 'first day of next month';
if (strtotime($string) === false) {
    echo "'$string' is not a valid date/time string.";
} elseif (Carbon::hasRelativeKeywords($string)) {
    echo "'$string' is a relative valid date/time string, it will returns different dates depending on the current date.";
} else {
    echo "'$string' is an absolute date/time string, it will always returns the same date.";
}
5

Bạn cũng có thể sử dụng

use Carbon\Carbon;
042,
use Carbon\Carbon;
043,
use Carbon\Carbon;
044 và
use Carbon\Carbon;
045 (hoặc các phương pháp số ít không có
use Carbon\Carbon;
046 thành "tháng") để cộng/phụ các tháng một cách rõ ràng có hoặc không có tràn bất kể chế độ hiện tại và tương tự cho bất kỳ đơn vị lớn hơn nào (quý, năm

$string = 'first day of next month';
if (strtotime($string) === false) {
    echo "'$string' is not a valid date/time string.";
} elseif (Carbon::hasRelativeKeywords($string)) {
    echo "'$string' is a relative valid date/time string, it will returns different dates depending on the current date.";
} else {
    echo "'$string' is an absolute date/time string, it will always returns the same date.";
}
6

Điều tương tự có sẵn trong nhiều năm

Bạn cũng có thể kiểm soát tràn cho bất kỳ thiết bị nào khi làm việc với đầu vào không xác định

$string = 'first day of next month';
if (strtotime($string) === false) {
    echo "'$string' is not a valid date/time string.";
} elseif (Carbon::hasRelativeKeywords($string)) {
    echo "'$string' is a relative valid date/time string, it will returns different dates depending on the current date.";
} else {
    echo "'$string' is an absolute date/time string, it will always returns the same date.";
}
7

Bất kỳ đơn vị có thể sửa đổi nào cũng có thể được chuyển làm đối số của các phương thức đó

$string = 'first day of next month';
if (strtotime($string) === false) {
    echo "'$string' is not a valid date/time string.";
} elseif (Carbon::hasRelativeKeywords($string)) {
    echo "'$string' is a relative valid date/time string, it will returns different dates depending on the current date.";
} else {
    echo "'$string' is an absolute date/time string, it will always returns the same date.";
}
8

Khi

use Carbon\Carbon;
008 mở rộng
use Carbon\Carbon;
027, nó kế thừa các phương thức của nó, chẳng hạn như
use Carbon\Carbon;
049 lấy đối tượng ngày thứ hai làm đối số và trả về một thể hiện
use Carbon\Carbon;
025

Chúng tôi cũng cung cấp

use Carbon\Carbon;
051 hành động giống như
use Carbon\Carbon;
049 nhưng trả về một phiên bản
use Carbon\Carbon;
026. Kiểm tra chương CarbonInterval để biết thêm thông tin. Carbon cũng thêm các phương pháp khác cho từng đơn vị, chẳng hạn như
use Carbon\Carbon;
054,
use Carbon\Carbon;
055, v.v. Tất cả các phương thức
use Carbon\Carbon;
051 và
use Carbon\Carbon;
057 và
use Carbon\Carbon;
058 đều có thể nhận 2 đối số tùy chọn. ngày để so sánh với (nếu thiếu, bây giờ được sử dụng thay thế) và một tùy chọn boolean tuyệt đối (
use Carbon\Carbon;
059 theo mặc định) làm cho phương thức trả về một giá trị tuyệt đối bất kể ngày nào lớn hơn ngày kia. Nếu được đặt thành
use Carbon\Carbon;
060, nó sẽ trả về giá trị âm khi phiên bản mà phương thức được gọi lớn hơn ngày được so sánh (đối số đầu tiên hoặc bây giờ). Lưu ý rằng nguyên mẫu
use Carbon\Carbon;
049 khác. đối số đầu tiên của nó (ngày) là bắt buộc và đối số thứ hai của nó (tùy chọn tuyệt đối) mặc định là
use Carbon\Carbon;
060

Các hàm này luôn trả về tổng chênh lệch được biểu thị trong thời gian đã chỉ định được yêu cầu. Điều này khác với hàm

use Carbon\Carbon;
049 của lớp cơ sở trong đó khoảng thời gian 122 giây sẽ được trả về là 2 phút 2 giây thông qua phiên bản
use Carbon\Carbon;
025. Hàm
use Carbon\Carbon;
065 sẽ trả về 2 trong khi
use Carbon\Carbon;
066 sẽ trả về 122. Tất cả các giá trị được cắt bớt và không được làm tròn. Mỗi chức năng bên dưới có một tham số đầu tiên mặc định là phiên bản Carbon để so sánh hoặc null nếu bạn muốn sử dụng
use Carbon\Carbon;
68. Tham số thứ 2 lại là tùy chọn và cho biết bạn muốn giá trị trả về là giá trị tuyệt đối hay giá trị tương đối có thể có dấu
use Carbon\Carbon;
068 (âm) nếu ngày được chuyển vào nhỏ hơn phiên bản hiện tại. Điều này sẽ mặc định là true, trả về giá trị tuyệt đối

$string = 'first day of next month';
if (strtotime($string) === false) {
    echo "'$string' is not a valid date/time string.";
} elseif (Carbon::hasRelativeKeywords($string)) {
    echo "'$string' is a relative valid date/time string, it will returns different dates depending on the current date.";
} else {
    echo "'$string' is an absolute date/time string, it will always returns the same date.";
}
9

Các phương pháp này có kết quả cắt ngắn. Điều đó có nghĩa là

use Carbon\Carbon;
069 trả về 1 cho bất kỳ sự khác biệt nào giữa 1 được bao gồm và 2 bị loại trừ. Nhưng các phương pháp tương tự có sẵn cho kết quả float

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
10

⚠️ Lưu ý quan trọng về thời gian tiết kiệm ánh sáng ban ngày (DST), theo mặc định PHP DateTime không tính đến DST, điều đó có nghĩa là ví dụ một ngày chỉ có 23 giờ như ngày 30 tháng 3 năm 2014 ở London sẽ được tính là 24 giờ

⚠️ Hãy cẩn thận với

use Carbon\Carbon;
070, điều này có thể mang lại cho bạn kết quả thấp hơn (
use Carbon\Carbon;
071) trong khoảng thời gian có nhiều ngày hơn (
use Carbon\Carbon;
072) do số ngày thay đổi trong tháng (đặc biệt là tháng Hai). Theo mặc định, chúng tôi dựa vào kết quả của DateTime. diff nhạy cảm với tràn. Xem vấn đề #2264 để biết các phép tính thay thế

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
11

Carbon cũng tuân theo hành vi này để thêm/phụ/diff giây/phút/giờ. Nhưng chúng tôi cung cấp các phương pháp để hoạt động với giờ thực bằng cách sử dụng dấu thời gian

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
12

Theo cách tương tự, bạn có thể sử dụng

use Carbon\Carbon;
073 và
use Carbon\Carbon;
074 trên bất kỳ thiết bị nào

Ngoài ra còn có các chức năng lọc đặc biệt

use Carbon\Carbon;
075,
use Carbon\Carbon;
076 và
use Carbon\Carbon;
077, để giúp bạn lọc sự khác biệt theo ngày, giờ hoặc khoảng thời gian tùy chỉnh. Ví dụ để đếm ngày cuối tuần giữa hai trường hợp

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
13

Tất cả phương thức diffIn*Filtered lấy 1 bộ lọc có thể gọi được làm tham số bắt buộc và đối tượng ngày làm tham số thứ hai tùy chọn, nếu thiếu, bây giờ được sử dụng. Bạn cũng có thể chuyển true làm tham số thứ ba để nhận các giá trị tuyệt đối

Để xử lý nâng cao các ngày trong tuần/cuối tuần, hãy sử dụng các công cụ sau

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
14

Con người đọc

use Carbon\Carbon;
078 dễ dàng hơn so với 30 ngày trước. Đây là một chức năng phổ biến được thấy trong hầu hết các thư viện ngày, vì vậy tôi nghĩ rằng tôi cũng sẽ thêm nó vào đây. Đối số duy nhất cho hàm là đối tượng Carbon khác để tìm khác biệt và tất nhiên nó mặc định là
use Carbon\Carbon;
68 nếu không được chỉ định

Phương thức này sẽ thêm một cụm từ sau giá trị chênh lệch so với phiên bản và phiên bản được truyền trong phiên bản. Có 4 khả năng

  • Khi so sánh một giá trị trong quá khứ với giá trị mặc định hiện tại
  • Khi so sánh một giá trị trong tương lai với giá trị mặc định hiện tại
    • 1 giờ kể từ bây giờ
    • 5 tháng kể từ bây giờ
  • Khi so sánh một giá trị trong quá khứ với một giá trị khác
    • 1 giờ trước
    • 5 tháng trước
  • Khi so sánh một giá trị trong tương lai với một giá trị khác
    • 1 giờ sau
    • 5 tháng sau

Bạn cũng có thể chuyển

use Carbon\Carbon;
080 làm tham số thứ 2 để xóa các công cụ sửa đổi trước đây, kể từ bây giờ, v.v.
use Carbon\Carbon;
081,
use Carbon\Carbon;
082 để nhận các công cụ sửa đổi trước hoặc sau đó,
use Carbon\Carbon;
083 để nhận các công cụ sửa đổi trước hoặc sau hoặc
use Carbon\Carbon;
084 (chế độ mặc định) để nhận các công cụ sửa đổi trước/từ bây giờ nếu đối số 2 giây là null hoặc trước/sau nếu không

Bạn có thể chuyển

use Carbon\Carbon;
059 làm tham số thứ 3 để sử dụng cú pháp ngắn nếu có ở ngôn ngữ được sử dụng.
use Carbon\Carbon;
086

Bạn có thể chuyển một số từ 1 đến 6 làm tham số thứ 4 để nhận được sự khác biệt ở nhiều phần (khác biệt chính xác hơn).

use Carbon\Carbon;
087

Phiên bản

use Carbon\Carbon;
088 có thể là một DateTime, một phiên bản Carbon hoặc bất kỳ đối tượng nào triển khai DateTimeInterface, nếu một chuỗi được truyền, nó sẽ được phân tích cú pháp để lấy một phiên bản Carbon và nếu
use Carbon\Carbon;
86 được truyền, thay vào đó,
use Carbon\Carbon;
088 sẽ được sử dụng

Để tránh có quá nhiều đối số và trộn lẫn thứ tự, bạn có thể sử dụng các phương thức dài dòng

  • use Carbon\Carbon;
    091
  • use Carbon\Carbon;
    092
  • use Carbon\Carbon;
    093
  • use Carbon\Carbon;
    094
  • use Carbon\Carbon;
    095
  • use Carbon\Carbon;
    096
  • use Carbon\Carbon;
    097
  • use Carbon\Carbon;
    098

Tái bút. Các đối số

use Carbon\Carbon;
088 và
echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4100 có thể được hoán đổi khi cần

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
15

Bạn cũng có thể thay đổi ngôn ngữ của chuỗi bằng cách sử dụng

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4101 trước lệnh gọi diffForHumans(). Xem phần bản địa hóa để biết thêm chi tiết

kể từ 2. 9. 0 tham số diffForHumans() có thể được truyền dưới dạng một mảng

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
16

Nếu đối số bị bỏ qua hoặc được đặt thành

use Carbon\Carbon;
86, thì chỉ có
echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4103 được bật. tùy chọn có sẵn là

  • echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
    echo "\n";
    echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
    
    4104 /
    echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
    echo "\n";
    echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
    
    4105 /
    echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
    echo "\n";
    echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
    
    4106 (không có gì theo mặc định). mỗi lần chỉ có thể sử dụng một trong 3 cái (các cái khác bị bỏ qua) và nó yêu cầu phải đặt
    echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
    echo "\n";
    echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
    
    4107. Theo mặc định, khi khác biệt có các phần như cài đặt
    echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
    echo "\n";
    echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
    
    4107 được yêu cầu và bỏ qua tất cả các đơn vị còn lại
    • Nếu
      echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
      echo "\n";
      echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
      
      4104 được bật, các đơn vị còn lại được tính tổng và nếu chúng >= 0. 5 của đơn vị cuối cùng của khác biệt, đơn vị này sẽ được làm tròn thành giá trị trên
    • Nếu
      echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
      echo "\n";
      echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
      
      4105 được bật, các đơn vị còn lại được tính tổng và nếu chúng > 0 của đơn vị cuối cùng của khác biệt, thì đơn vị này sẽ được làm tròn thành giá trị trên
    • Nếu
      echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
      echo "\n";
      echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
      
      4106 được bật, đơn vị khác biệt cuối cùng sẽ được làm tròn xuống. Nó không tạo ra sự khác biệt so với hành vi mặc định cho
      use Carbon\Carbon;
      016 vì khoảng thời gian không thể bị tràn, nhưng tùy chọn này có thể cần thiết khi được sử dụng với
      echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
      echo "\n";
      echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
      
      4113 (và các khoảng thời gian không được kiểm tra có thể có 60 phút trở lên, 24 giờ trở lên, v.v. ). Ví dụ.
      echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
      echo "\n";
      echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
      
      4114 trả về
      echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
      echo "\n";
      echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
      
      4115 trong khi
      echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
      echo "\n";
      echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
      
      4116 trả về
      echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
      echo "\n";
      echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
      
      4117
  • echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
    echo "\n";
    echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
    
    4103 (được bật theo mặc định). biến khác biệt trống thành 1 giây
  • echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
    echo "\n";
    echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
    
    4119 bị tắt theo mặc định). biến diff từ bây giờ đến bây giờ thành "ngay bây giờ"
  • echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
    echo "\n";
    echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
    
    4120 (được tắt theo mặc định). biến "1 ngày từ bây giờ/trước" thành "hôm qua/ngày mai"
  • echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
    echo "\n";
    echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
    
    4121 (được tắt theo mặc định). biến "2 ngày kể từ bây giờ/trước" thành "trước hôm qua/sau
  • echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
    echo "\n";
    echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
    
    4122 (được tắt theo mặc định). sẽ chỉ giữ chuỗi đơn vị đầu tiên của khoảng thời gian, ví dụ: nếu khác biệt sẽ là "2 tuần 1 ngày 34 phút 12 giây" vì ngày và phút không phải là đơn vị liên tiếp, bạn sẽ nhận được. "2 tuần 1 ngày"

Sử dụng toán tử đường ống để bật/tắt nhiều tùy chọn cùng một lúc, ví dụ.

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4123

Bạn cũng có thể sử dụng

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4124,
echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4125,
echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4126 để thay đổi các tùy chọn mặc định và
echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4127 để nhận các tùy chọn mặc định nhưng bạn nên tránh sử dụng nó vì ở dạng tĩnh, nó có thể xung đột với lệnh gọi từ các phần mã khác/thư viện bên thứ ba

Bí danh và phương pháp đảo ngược được cung cấp cho mục đích ngữ nghĩa

  • echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
    echo "\n";
    echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
    
    4128 (bí danh của diffForHumans)
  • echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
    echo "\n";
    echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
    
    4129 (bí danh của diffForHumans)
  • echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
    echo "\n";
    echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
    
    4130 (kết quả nghịch đảo, tăm bông trước và sự khác biệt trong tương lai)
  • echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
    echo "\n";
    echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
    
    4131 (bí danh của)
  • echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
    echo "\n";
    echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
    
    4132 (bí danh của from với đối số đầu tiên được bỏ qua trừ khi đối số đầu tiên là
    echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
    echo "\n";
    echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
    
    4133, hiện được sử dụng thay thế), để sử dụng theo ngữ nghĩa. tạo một chuỗi giống như "3 giờ kể từ bây giờ" với các ngày trong tương lai
  • echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
    echo "\n";
    echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
    
    4134 (bí danh của fromNow), để sử dụng theo ngữ nghĩa. tạo một chuỗi giống như "3 giờ trước" với các ngày trong quá khứ
  • echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
    echo "\n";
    echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
    
    4135 (bí danh của to với đối số đầu tiên được bỏ qua, hiện được sử dụng thay thế)
  • echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
    echo "\n";
    echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
    
    4136 gọi diffForHumans với các tùy chọn
    echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
    echo "\n";
    echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
    
    4137 (được phân tách bằng hôn mê),
    echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
    echo "\n";
    echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
    
    4138 (không có từ ngữ "trước"/"từ bây giờ"/"trước"/"sau"),
    echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
    echo "\n";
    echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
    
    4139 (không có từ ngữ "vừa rồi"/"hôm qua"/"ngày mai"

Nhóm các phương thức này thực hiện các sửa đổi hữu ích đối với phiên bản hiện tại. Hầu hết trong số họ là tự giải thích từ tên của họ. hoặc ít nhất là nên. Bạn cũng sẽ nhận thấy rằng các phương thức startOfXXX(), next() và previous() đặt thời gian là 00. 00. 00 và các phương thức endOfXXX() đặt thời gian thành 23. 59. 59 cho đơn vị lớn hơn ngày

Điều duy nhất hơi khác một chút là chức năng

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4141. Nó di chuyển phiên bản của bạn đến ngày ở giữa giữa chính nó và đối số Carbon được cung cấp

Phương pháp

use Carbon\Carbon;
017 bản địa mạnh mẽ của
use Carbon\Carbon;
027 có sẵn không bị ảnh hưởng. Nhưng chúng tôi cũng cung cấp một phiên bản nâng cao của nó.
use Carbon\Carbon;
020 cho phép một số cú pháp bổ sung như
echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4145 và được gọi nội bộ bởi
echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4146 và
echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4147

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
17

Làm tròn cũng có sẵn cho bất kỳ đơn vị

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
18

Các hằng số sau được định nghĩa trong lớp Carbon

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
19
echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
50

Các phiên bản Carbon có thể được đánh số thứ tự (bao gồm CarbonImmutable, CarbonInterval và CarbonPeriod)

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
51

Các phiên bản Carbon có thể được mã hóa và giải mã từ JSON. Kể từ phiên bản 2. 4, chúng tôi yêu cầu rõ ràng phần mở rộng PHP JSON. Nó sẽ không ảnh hưởng gì vì tiện ích mở rộng này được đóng gói theo mặc định với PHP. Nếu tiện ích mở rộng bị tắt, hãy lưu ý rằng bạn sẽ bị khóa trên 2. 3. Nhưng bạn vẫn có thể sử dụng

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4148 khi cập nhật/cài đặt trình soạn thảo để nâng cấp, sau đó điền vào giao diện
echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4149 bị thiếu bằng cách thêm JsonSerializable. php

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
52

Bạn có thể sử dụng

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4150 để tùy chỉnh việc lập số sê-ri

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
53

Nếu bạn muốn áp dụng điều này trên toàn cầu, trước tiên hãy cân nhắc sử dụng nhà máy, hoặc nếu bạn sử dụng Carbon 1, bạn có thể sử dụng

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
54

Phương thức

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4151 cho phép bạn gọi hàm được cung cấp cho
echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4152 hoặc kết quả của
echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4153 nếu không chỉ định tuần tự hóa tùy chỉnh

Bạn có thể quen thuộc với khái niệm macro nếu bạn đã quen làm việc với Laravel và các đối tượng như phản hồi hoặc bộ sưu tập. Các macro carbon hoạt động giống như Laravel

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4154 Trait

Gọi phương thức

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4155 với tên macro của bạn làm đối số đầu tiên và đóng làm đối số thứ hai. Điều này sẽ làm cho hành động đóng có sẵn trên tất cả các phiên bản Carbon

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
55

Lưu ý rằng bao đóng đứng trước

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4156 và sử dụng
echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4157 (có sẵn từ phiên bản 2. 25. 0) thay vì
echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4158. Đây là cách tiêu chuẩn để tạo các macro Carbon và cách này cũng áp dụng cho các macro trên các lớp khác (
echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4159,
use Carbon\Carbon;
026 và
echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4161)

Bằng cách làm theo mẫu này, bạn đảm bảo rằng các nhà phát triển khác trong nhóm của bạn (và bạn trong tương lai) có thể tin cậy một cách an toàn vào xác nhận.

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4162 tương đương với
echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4163. Điều này làm cho việc sử dụng macro trở nên nhất quán và có thể dự đoán được, đồng thời đảm bảo cho nhà phát triển rằng bất kỳ macro nào cũng có thể được gọi một cách an toàn ở dạng tĩnh hoặc động

Điều đáng buồn là IDE sẽ không phải là phương thức macro của bạn (không có tính năng tự động hoàn thành cho phương thức

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4164 trong ví dụ trên). Nhưng đó không còn là vấn đề nhờ công cụ CLI của chúng tôi. carbon-cli cho phép bạn tạo các tệp trợ giúp IDE cho mixin và macro của bạn

Macro là công cụ hoàn hảo để xuất ngày với một số cài đặt hoặc tùy chọn người dùng

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
56

Macro cũng có thể được nhóm trong các lớp và được áp dụng với

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4165

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
57

Kể từ Carbon 2. 23. 0, cũng có thể rút ngắn cú pháp mixin bằng cách sử dụng các đặc điểm

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
58

Bạn có thể kiểm tra xem macro (bao gồm mixin) có khả dụng với

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4166 hay không và truy xuất lệnh đóng macro với
echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4167

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
59

Một macro bắt đầu bằng

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4168 theo sau là một chữ cái viết hoa sẽ tự động cung cấp một bộ thu động trong khi một macro bắt đầu bằng
echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4169 và theo sau là một chữ cái viết hoa sẽ cung cấp một bộ thiết lập động

use Carbon\Carbon;
00

Bạn cũng có thể chặn bất kỳ cuộc gọi nào khác bằng macro chung

use Carbon\Carbon;
01

Và đoán xem?

use Carbon\Carbon;
02
use Carbon\Carbon;
03

Chúng tôi cung cấp tiện ích mở rộng PHPStan ngay lập tức mà bạn có thể đưa vào phpstan của mình. đèn neon

use Carbon\Carbon;
04

Nếu bạn đang sử dụng Laravel, bạn có thể cân nhắc sử dụng larastan, hỗ trợ đầy đủ các tính năng của Laravel trong PHPStan (bao gồm cả Carbon macro). Ngoài ra, để bao gồm tệp neon, bạn có thể cài đặt phpstan/extension-installer

use Carbon\Carbon;
05

Sau đó, thêm tệp nơi macro Carbon và mixin của bạn được xác định trong mục bootstrapFiles

use Carbon\Carbon;
06

Kiểm tra cmixin/thời gian làm việc (bao gồm cả cmixin/ngày làm việc) để xử lý cả ngày lễ và giờ làm việc với nhiều tính năng nâng cao

use Carbon\Carbon;
07

Tín dụng. meteguerlek (#1191)

use Carbon\Carbon;
08

Tín dụng. afrojuju1 (#1063)

use Carbon\Carbon;
09

Tín dụng. andreisena, 36864 (#1052)

Kiểm tra cmixin/ngày làm việc để có trình xử lý ngày lễ hoàn chỉnh hơn

use Carbon\Carbon;
10

Tín dụng. vẽ lại (#132)

use Carbon\Carbon;
11

Tín dụng. thiagocordeiro (#927)

Trong khi sử dụng macro là cách được đề xuất để thêm các phương thức hoặc hành vi mới vào Carbon, bạn có thể tiến xa hơn và mở rộng chính lớp đó, điều này cho phép một số cách thay thế để ghi đè lên các phương thức chính;

use Carbon\Carbon;
12

Macro sau đây cho phép bạn chọn múi giờ chỉ bằng tên thành phố (bỏ qua lục địa). Hoàn hảo để làm cho bài kiểm tra đơn vị của bạn trôi chảy hơn

use Carbon\Carbon;
13

Lớp CarbonInterval được kế thừa từ lớp DateInterval của PHP

Phương pháp
use Carbon\Carbon;
11
echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4172 và
echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4173 mong đợi các số cho mỗi đơn vị theo cùng một thứ tự so với
use Carbon\Carbon;
83 và có thể được sử dụng một cách thuận tiện với PHP 8

use Carbon\Carbon;
17

Nếu bạn thấy mình kế thừa một phiên bản

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4175 từ một thư viện khác, đừng lo. Bạn có thể tạo phiên bản
use Carbon\Carbon;
026 thông qua hàm
use Carbon\Carbon;
009 thân thiện

use Carbon\Carbon;
18

Và ngược lại, bạn có thể trích xuất một

use Carbon\Carbon;
025 thô từ
use Carbon\Carbon;
026 và thậm chí truyền nó vào bất kỳ lớp nào mở rộng
use Carbon\Carbon;
025

use Carbon\Carbon;
19

Bạn có thể so sánh các khoảng theo cách tương tự như các đối tượng Carbon, sử dụng

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4181,
echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4182
echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4183,
echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4184,
echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4185,
echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4186,
use Carbon\Carbon;
009,
echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4188, v.v.

Những người trợ giúp khác, nhưng hãy lưu ý rằng việc triển khai cung cấp cho những người trợ giúp để xử lý hàng tuần nhưng chỉ tiết kiệm được vài ngày. Số tuần được tính dựa trên tổng số ngày của phiên bản hiện tại

use Carbon\Carbon;
20

CarbonInterval mở rộng DateInterval và bạn có thể tạo cả hai bằng định dạng thời lượng ISO-8601

use Carbon\Carbon;
21

Khoảng carbon có thể được tạo ra từ các chuỗi thân thiện với con người nhờ phương pháp

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4189

use Carbon\Carbon;
22

Hoặc tạo nó từ một đối tượng

use Carbon\Carbon;
025 /
use Carbon\Carbon;
026 khác

use Carbon\Carbon;
23

Lưu ý tháng viết tắt "mo" để phân biệt với phút và toàn bộ cú pháp không phân biệt chữ hoa chữ thường

Nó cũng có một

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4192 tiện dụng, được ánh xạ dưới dạng triển khai
use Carbon\Carbon;
003, in khoảng thời gian cho con người

use Carbon\Carbon;
24

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4194 cho phép các đối số tùy chọn giống như
echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4195 ngoại trừ
echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4100 được đặt thành -1 (không giới hạn) theo mặc định. Xem các tùy chọn
echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4195

Như bạn có thể thấy, bạn có thể thay đổi ngôn ngữ của chuỗi bằng cách sử dụng

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4198

Đối với Carbon, bạn có thể sử dụng phương thức tạo để trả về một phiên bản mới của CarbonInterval từ các khoảng hoặc chuỗi khác

use Carbon\Carbon;
25

Các phương pháp cộng, phụ (hoặc trừ), lần, chia sẻ, nhân và chia cho phép thực hiện các phép tính khoảng thời gian tiếp theo

use Carbon\Carbon;
26

Bạn nhận được phép tính thuần túy từ đơn vị đầu vào của mình theo đơn vị. Để xếp từng phút thành giờ, giờ thành ngày, v.v. Sử dụng phương pháp xếp tầng

use Carbon\Carbon;
27

Các yếu tố mặc định là

  • 1 phút = 60 giây
  • 1 giờ = 60 phút
  • 1 ngày = 24 giờ
  • 1 tuần = 7 ngày
  • 1 tháng = 4 tuần
  • 1 năm = 12 tháng

CarbonIntervals không mang ngữ cảnh nên chúng không thể chính xác hơn (không có DST, không có năm nhuận, không xem xét độ dài tháng hoặc độ dài năm thực). Nhưng bạn hoàn toàn có thể tùy chỉnh các yếu tố đó. Ví dụ để xử lý nhật ký thời gian làm việc

use Carbon\Carbon;
28

Có thể chuyển đổi một khoảng thời gian thành một đơn vị nhất định (sử dụng các yếu tố xếp tầng được cung cấp)

use Carbon\Carbon;
29

Phương thức và thuộc tính

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4199 cần các khoảng thời gian xếp tầng, nếu khoảng thời gian của bạn có thể bị tràn, hãy xếp tầng chúng trước khi gọi các tính năng này

use Carbon\Carbon;
30

Bạn cũng có thể lấy thông số ISO 8601 của khoảng thời gian với ________ 16200

use Carbon\Carbon;
31

Cũng có thể lấy nó từ một đối tượng DateInterval kể từ trình trợ giúp tĩnh

use Carbon\Carbon;
32

Danh sách các khoảng ngày có thể được sắp xếp nhờ các phương pháp

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
6201 và
echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
6202

use Carbon\Carbon;
33

Ngoài các khoảng thời gian cố định, Khoảng thời gian động có thể được mô tả bằng chức năng bước từ ngày này sang ngày khác

use Carbon\Carbon;
34

Bạn có thể truy cập và sửa đổi định nghĩa bước đóng bằng cách sử dụng

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
6203 và
echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
6204 (trình thiết lập có thể lấy
use Carbon\Carbon;
86 để xóa nó để nó trở thành một khoảng thời gian cố định đơn giản. Và miễn là khoảng thời gian có một bước, nó sẽ được ưu tiên hơn tất cả các đơn vị cố định mà nó chứa

Bạn có thể gọi

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
6206 để áp dụng khoảng thời gian động hoặc tĩnh hiện tại cho một ngày (
use Carbon\Carbon;
027,
use Carbon\Carbon;
008 hoặc những ngày không thay đổi) một cách tích cực (hoặc chuyển một cách tiêu cực
use Carbon\Carbon;
059 làm đối số thứ hai)

use Carbon\Carbon;
35

Kết xuất các giá trị khoảng dưới dạng một mảng với

use Carbon\Carbon;
36

Cuối cùng, một phiên bản CarbonInterval có thể được chuyển đổi thành một phiên bản CarbonPeriod bằng cách gọi

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
6210 với các đối số bổ sung

Tôi nghe bạn hỏi phiên bản CarbonPeriod là gì. Ồ. Chuyển đổi hoàn hảo sang chương tiếp theo của chúng tôi

CarbonPeriod là phiên bản DatePeriod thân thiện với con người với nhiều phím tắt

use Carbon\Carbon;
37

Một CarbonPeriod có thể được xây dựng theo một số cách

  • ngày bắt đầu, ngày kết thúc và khoảng thời gian tùy chọn (theo mặc định là 1 ngày),
  • ngày bắt đầu, số lần lặp lại và khoảng thời gian tùy chọn,
  • thông số kỹ thuật khoảng ISO 8601,
  • từ một
    echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
    echo "\n";
    echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
    
    6211 hoặc
    echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
    echo "\n";
    echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
    
    4161 khác bằng cách sử dụng
    echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
    echo "\n";
    echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
    
    6213 hoặc đơn giản là sử dụng
    echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
    echo "\n";
    echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
    
    6214

Ngày có thể được cung cấp dưới dạng phiên bản DateTime/Carbon, các chuỗi tuyệt đối như "2007-10-15 15. 00" hoặc chuỗi tương đối, ví dụ "thứ hai tới". Khoảng thời gian có thể được cung cấp dưới dạng ví dụ DateInterval/CarbonInterval, thông số kỹ thuật khoảng thời gian ISO 8601 như "P4D" hoặc chuỗi có thể đọc được của con người, ví dụ: "4 ngày"

Hàm tạo mặc định và các phương thức

use Carbon\Carbon;
83 rất linh hoạt về loại đối số và thứ tự, vì vậy nếu bạn muốn chính xác hơn, nên sử dụng cú pháp thông thạo. Mặt khác, bạn có thể chuyển mảng giá trị động cho
echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
6216, nó sẽ thực hiện công việc xây dựng một thể hiện mới với mảng đã cho dưới dạng danh sách các đối số

CarbonPeriod triển khai giao diện Iterator. Nó có nghĩa là nó có thể được truyền trực tiếp vào vòng lặp

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
6217

use Carbon\Carbon;
38

Các tham số có thể được sửa đổi trong quá trình lặp lại

use Carbon\Carbon;
39

Giống như DatePeriod, CarbonPeriod hỗ trợ thông số khoảng thời gian ISO 8601

Lưu ý rằng DatePeriod gốc coi số lần lặp lại là số lần lặp lại khoảng thời gian. Do đó, nó sẽ cho một kết quả ít hơn khi loại trừ ngày bắt đầu. Việc giới thiệu các bộ lọc tùy chỉnh trong CarbonPeriod khiến việc biết số lượng kết quả trở nên khó khăn hơn. Vì lý do đó, chúng tôi đã thay đổi cách triển khai một chút và các lần lặp lại được coi là giới hạn chung cho số ngày được trả về

use Carbon\Carbon;
40

Bạn có thể truy xuất dữ liệu từ khoảng thời gian với nhiều getters

use Carbon\Carbon;
41

Các getters bổ sung cho phép bạn truy cập các kết quả dưới dạng một mảng

use Carbon\Carbon;
42

Lưu ý rằng nếu bạn có ý định làm việc bằng cách sử dụng các hàm trên, bạn nên lưu trữ kết quả của lệnh gọi

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
6218 vào một biến và sử dụng nó thay vì mỗi lệnh gọi thực hiện một lần lặp đầy đủ trong nội bộ

Để thay đổi các tham số, bạn có thể sử dụng các phương thức setter

use Carbon\Carbon;
43

Bạn có thể thay đổi các tùy chọn bằng cách sử dụng

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
6219 để thay thế tất cả các tùy chọn nhưng bạn cũng có thể thay đổi chúng một cách riêng biệt

use Carbon\Carbon;
44

Bạn có thể kiểm tra xem 2 kỳ có trùng nhau hay không

use Carbon\Carbon;
45

Như đã đề cập trước đó, theo tiêu chuẩn ISO 8601, số lần lặp lại là số lần khoảng thời gian phải được lặp lại. Do đó, DatePeriod gốc sẽ thay đổi số lượng ngày được trả về tùy thuộc vào việc loại trừ ngày bắt đầu. Trong khi đó, CarbonPeriod dễ tha thứ hơn về mặt đầu vào và cho phép các bộ lọc tùy chỉnh, coi các lần lặp lại là giới hạn tổng thể cho số ngày được trả về

use Carbon\Carbon;
46

Có thể dễ dàng lọc các ngày được trả về bởi DatePeriod. Chẳng hạn, có thể sử dụng các bộ lọc để bỏ qua một số ngày nhất định hoặc chỉ lặp lại trong các ngày làm việc hoặc cuối tuần. Một chức năng lọc sẽ trả về

use Carbon\Carbon;
059 để chấp nhận một ngày,
use Carbon\Carbon;
060 để bỏ qua nó nhưng tiếp tục tìm kiếm hoặc
echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
6222 để kết thúc quá trình lặp lại

use Carbon\Carbon;
47

Bạn cũng có thể bỏ qua một hoặc nhiều giá trị bên trong vòng lặp

use Carbon\Carbon;
48

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
6223 cho phép bạn truy xuất tất cả các bộ lọc được lưu trữ trong một khoảng thời gian. Nhưng hãy lưu ý giới hạn số lần lặp lại và ngày kết thúc sẽ xuất hiện trong mảng được trả về khi chúng được lưu trữ nội bộ dưới dạng bộ lọc

use Carbon\Carbon;
49

Các bộ lọc được lưu trữ trong ngăn xếp và có thể được quản lý bằng một bộ phương thức đặc biệt

use Carbon\Carbon;
50

Thứ tự thêm bộ lọc có thể ảnh hưởng đến hiệu suất và kết quả, vì vậy bạn có thể sử dụng

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
6224 để thêm bộ lọc vào cuối ngăn xếp; . Bạn thậm chí có thể sử dụng
echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
6226 để thay thế tất cả các bộ lọc. Lưu ý rằng bạn sẽ phải giữ đúng định dạng của ngăn xếp và nhớ về các bộ lọc nội bộ để biết giới hạn lặp lại và ngày kết thúc. Ngoài ra, bạn có thể sử dụng phương pháp
echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
6227 rồi thêm từng bộ lọc mới

Ví dụ: khi bạn thêm bộ lọc tùy chỉnh giới hạn số ngày thử, kết quả sẽ khác nếu bạn thêm bộ lọc đó trước hoặc sau bộ lọc ngày trong tuần

use Carbon\Carbon;
51

Lưu ý rằng bộ lọc lặp lại tích hợp không hoạt động theo cách này. Thay vào đó, nó dựa trên khóa hiện tại chỉ được tăng một lần cho mỗi mục, bất kể phải kiểm tra bao nhiêu ngày trước khi tìm thấy ngày hợp lệ. Thủ thuật này làm cho nó hoạt động như nhau nếu bạn đặt nó ở đầu hoặc ở cuối ngăn xếp

Một số bí danh đã được thêm vào để đơn giản hóa việc xây dựng CarbonPeriod

use Carbon\Carbon;
52

CarbonPeriod có thể dễ dàng chuyển đổi thành chuỗi có thể đọc được của con người và thông số kỹ thuật ISO 8601

use Carbon\Carbon;
53

Theo mặc định, sử dụng và trả về phiên bản Carbon, nhưng bạn có thể dễ dàng đặt/lấy lớp ngày để sử dụng để lấy ngày không thay đổi chẳng hạn hoặc bất kỳ lớp nào triển khai CarbonInterface

use Carbon\Carbon;
54

CarbonPeriod có các phương thức trợ giúp

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
6228 và
echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
6229

use Carbon\Carbon;
55

Như tất cả các lớp Carbon khác,

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
4161 có phương thức
echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
6231 để chuyển đổi nó

use Carbon\Carbon;
56

Bạn có thể kiểm tra xem thời gian có tự theo sau không. Giai đoạn A theo sau giai đoạn B nếu ngày lặp lại đầu tiên của B bằng ngày lặp lại cuối cùng của A + khoảng thời gian của A. Ví dụ:

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
6232 theo sau
echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
6233 (giả sử cả bắt đầu và kết thúc đều không bị loại trừ thông qua tùy chọn cho các khoảng thời gian đó và giả sử các khoảng thời gian đó là khoảng thời gian (1 ngày)

use Carbon\Carbon;
57

Phương thức

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
6234 cho phép bạn kiểm tra xem một ngày có nằm trong khoảng thời gian không

use Carbon\Carbon;
58

So sánh bao gồm bắt đầu và kết thúc trừ khi bạn loại trừ chúng trong tùy chọn và đối với nó liên quan đến

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
6234, việc loại trừ chỉ loại trừ ngày chính xác, vì vậy

use Carbon\Carbon;
59

Bạn có thể sử dụng các phương pháp so sánh bắt đầu/kết thúc (bỏ qua các loại trừ) để so sánh chính xác hơn

  • echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
    echo "\n";
    echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
    
    6236 bắt đầu == ngày
  • echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
    echo "\n";
    echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
    
    6237 bắt đầu < ngày
  • echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
    echo "\n";
    echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
    
    6238 bắt đầu <= ngày
  • echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
    echo "\n";
    echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
    
    6239 bắt đầu > ngày
  • echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
    echo "\n";
    echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
    
    6240 bắt đầu >= ngày
  • echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
    echo "\n";
    echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
    
    6241 kết thúc == ngày
  • echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
    echo "\n";
    echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
    
    6242 kết thúc < ngày
  • echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
    echo "\n";
    echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
    
    6243 kết thúc <= ngày
  • echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
    echo "\n";
    echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
    
    6244 kết thúc > ngày
  • echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
    echo "\n";
    echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
    
    6245 kết thúc >= ngày
  • echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
    echo "\n";
    echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
    
    6246 bắt đầu <= bây giờ
  • echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
    echo "\n";
    echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
    
    6247 kết thúc <= bây giờ
  • echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
    echo "\n";
    echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
    
    6248 bắt đầu nhưng chưa kết thúc

Bắt đầu với Carbon 2, các múi giờ hiện được xử lý bằng một lớp chuyên dụng

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
6249 mở rộng DateTimeZone

use Carbon\Carbon;
60

Múi giờ mặc định được cung cấp bởi date_default_timezone_get nên nó sẽ được điều khiển bởi ngày cài đặt INI. múi giờ nhưng bạn thực sự nên ghi đè nó ở cấp ứng dụng bằng cách sử dụng date_default_timezone_set và bạn nên đặt nó thành

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
6250, nếu bạn đã sẵn sàng hoặc đã sử dụng múi giờ khác làm mặc định, vui lòng đọc bài viết sau. Luôn sử dụng ngày và giờ UTC

Nó giải thích tại sao UTC là một tiêu chuẩn đáng tin cậy. Và phương pháp hay nhất này thậm chí còn quan trọng hơn trong PHP vì API DateTime của PHP có nhiều lỗi với các thay đổi về độ lệch và múi giờ DST. Một số trong số chúng đã xuất hiện trên các phiên bản nhỏ và thậm chí trên các phiên bản vá lỗi (vì vậy bạn có thể nhận được các kết quả khác nhau khi chạy cùng một mã trên PHP 7. 1. 7 và 7. 1. 8 chẳng hạn) và một số lỗi thậm chí chưa được sửa. Vì vậy, chúng tôi khuyên bạn nên sử dụng UTC ở mọi nơi và chỉ thay đổi múi giờ khi bạn muốn hiển thị ngày. Xem ví dụ macro đầu tiên của chúng tôi

Trong khi, múi giờ khu vực ("Lục địa/Thành phố") có thể có DST và do đó có phần bù thay đổi trong năm, múi giờ phần bù có phần bù cố định không đổi

use Carbon\Carbon;
61

Bạn cũng có thể chuyển đổi múi giờ của vùng thành múi giờ bù và ngược lại

use Carbon\Carbon;
62

Bạn có thể tạo một

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
6249 từ các giá trị hỗn hợp bằng cách sử dụng phương pháp
use Carbon\Carbon;
009

use Carbon\Carbon;
63

Tương tự,

echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
6253 trả về
use Carbon\Carbon;
060 nếu bạn chuyển một giá trị không chính xác (chẳng hạn như tháng âm) nhưng nó đưa ra một ngoại lệ ở chế độ nghiêm ngặt.
echo (new Carbon('first day of December 2008'))->addWeeks(2);     // 2008-12-15 00:00:00
echo "\n";
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00
6255 giống như
use Carbon\Carbon;
83 nhưng đưa ra một ngoại lệ ngay cả khi không ở chế độ nghiêm ngặt

Nếu bạn định chuyển từ Carbon 1 sang Carbon 2, vui lòng lưu ý những thay đổi vi phạm sau đây mà bạn nên quan tâm