Lấy php năm hiện tại
If you really love your fluid method calls and get frustrated by the extra line or ugly pair of brackets necessary when using the constructor you'll enjoy the 69 method
The string passed to 70 or to 71 can represent a relative time (next sunday, tomorrow, first day of next month, last year) or an absolute time (first day of December 2008, 2017-01-06). You can test if a string will produce a relative or absolute date with 72
To accompany 68, a few other static instantiation helpers exist to create widely known instances. The only thing to really notice here is that 74, 75 and 76, besides behaving as expected, all accept a timezone parameter and each has their time value set to 77
The next group of static helpers are the 78 helpers. Most of the static 79 functions allow you to provide as many or as few arguments as you want and will provide default values for all others. Generally default values are the current date, time or timezone. Higher values will wrap appropriately but invalid values will throw an 80 with an informative message. The message is obtained from an DateTime. getLastErrors() call
81 will default the time to now. 82 will default the date to today. 83 will default any null parameter to the current respective value. As before, the 84 defaults to the current timezone and otherwise can be a DateTimeZone instance or simply a string timezone value. The only special case is for 83 that has minimum value as default for missing argument but default on current value when you pass explicitly 86 0Create exceptions occurs on such negative values but not on overflow, to get exceptions on overflow, use 87 1Note 1. 2018-02-29 also throws an exception while 2020-02-29 does not since 2020 is a leap year Note 2. 88 also produces an exception as this time is in an hour skipped by the daylight saving timeNote 3. The PHP native API allow consider there is a year 89 between 90 and 91 even if it doesn't regarding to Gregorian calendar. That's why years lower than 1 will throw an exception using 92. Check for year-0 detection 2 93 is mostly a wrapper for the base php function DateTime. createFromFormat. The difference being again the 84 argument can be a DateTimeZone instance or a string timezone value. Also, if there are errors with the format this function will call the 95 method and then throw a 80 with the errors as the message 3You can test if a date matches a format for 93 (e. g. date/time components, modifiers or separators) using 98 or 99 which also ensure data is actually enough to create an instance 4You can create instances from unix timestamps. 00 create a Carbon instance equal to the given timestamp and will set the timezone as well or default it to the current timezone. 01, is different in that the timezone will remain UTC (GMT+00. 00), it's equivalent to 02 but it supports int, float or string containing one or more numbers (like the one produced by 03) so it can also set microseconds with no precision lost. The third, 04, accepts a timestamp in milliseconds instead of seconds. Negative timestamps are also allowed 5You can also create a 05 of an existing Carbon instance. As expected the date, time and timezone values are all copied to the new instance 6You can use 06 on an existing Carbon instance to get a new instance at now in the same timezone 7Cuối cùng, nếu bạn thấy mình kế thừa một phiên bản 07 từ một thư viện khác, đừng lo. Bạn có thể tạo một phiên bản 08 thông qua một phương pháp thân thiện với 09. Hoặc sử dụng phương pháp thậm chí linh hoạt hơn 10 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, nó chỉ trả về null 8Carbon 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, đọc của chúng tôi Trước PHP 7. 1 micro giây DateTime không được thêm vào phiên bản 11 và không thể thay đổi sau đó, điều này có nghĩa là 9To work around this limitation in Carbon, we append microseconds when calling 12 in PHP < 7. 1, but this feature can be disabled on demand (no effect in PHP >= 7. 1) 0Ever need to loop through some dates to find the earliest or latest date? Didn't know what to set your initial maximum/minimum values to? There are now two helpers for this to make your decision simple 1Min and max value mainly depends on the system (32 or 64 bit) With a 32-bit OS system or 32-bit version of PHP (you can check it in PHP with 13), the minimum value is the 0-unix-timestamp (1970-01-01 00. 00. 00) and the maximum is the timestamp given by the constant 14With a 64-bit OS system and 64-bit version of PHP, the minimum is 01-01-01 00. 00. 00 and maximum is 9999-12-31 23. 59. 59. It's even possible to use negative year up to -9999 but be aware you may not have accurate results with some operations as the year 0 exists in PHP but not in the Gregorian calendar With Carbon 2, localization changed a lot, 750 new locales are supported and we now embed locale formats, day names, month names, ordinal suffixes, meridiem, week start and more. While Carbon 1 provided partial support and relied on third-party like IntlDateFormatter class and language packages for advanced translation, you now benefit of a wide internationalization support. You still use Carbon 1? I hope you would consider to upgrade, version 2 has really cool new features. Otherwise you can find the Unfortunately the base class DateTime does not have any localization support. To begin localization support a 15 method was added. The implementation makes a call to strftime using the current instance timestamp. If you first set the current locale with PHP function setlocale() then the string returned will be formatted in the correct locale 2 16 has also been localized. You can set the Carbon locale by using the static 17 function and get the current setting with 18 3Or you can isolate some code with a given locale 4Some languages require utf8 encoding to be printed (locale packages that does not ends with 19 mainly). In this case you can use the static method 20 to encode the result of the formatLocalized() call to the utf8 charset 5
Since 2. 9. 0, you can easily customize translations 6You can use fallback locales by passing in order multiple ones to 24 7In the example above, it will try to find translations in "xx" in priority, then in "xy" if missing, then in "es", so here, you get "Xday" from "xx", "Yday" from "xy", and "hace" and "minutos" from "es" Note that you can also use an other translator with 25 as long as the given translator implements 26. And you can get the global default translator using 27 (and 28 and 29 for the fallback locale, setFallbackLocale can be called multiple times to get multiple fallback locales) but as those method will change the behavior globally (including third-party libraries you may have in your app), it might cause unexpected results. You should rather customize translation using custom locales as in the example aboveCarbon embed a default translator that extends Symfony\Component\Translation\Translator You can So the support of a locale for 30, getters such as 31, 32 and short variants is driven by locales installed in your operating system. For other translations, it's supported internally thanks to Carbon community. You can check what's supported with the following methods 8So, here is the new recommended way to handle internationalization with Carbon 9The 33 method only change the language for the current instance and has precedence over global settings. We recommend you this approach so you can't have conflict with other places or third-party libraries that could use Carbon. Nevertheless, to avoid calling 33 each time, you can use factories 0You can call any static Carbon method on a factory (make, now, yesterday, tomorrow, parse, create, etc. ) Factory (and FactoryImmutable that generates CarbonImmutable instances) are the best way to keep things organized and isolated. As often as possible we recommend you to work with UTC dates, then apply locally (or with a factory) the timezone and the language before displaying dates to the user What factory actually do is using the method name as static constructor then call 35 method which is a way to group in one call settings of locale, timezone, months/year overflow, etc. () 1 35 also allow to pass local macros 2Factory settings can be changed afterward with 37 or to merge new settings with existing ones 38 and the class to generate can be initialized as the second argument of the construct then changed later with 39 3Previously there was 40 that set globally the locale. But as for our other static setters, we highly discourage you to use it. It breaks the principle of isolation because the configuration will apply for every class that uses CarbonYou also may know 41 method from Carbon 1. This method still works the same in Carbon 2 but you should better use 42 instead 43 use ISO format rather than PHP-specific format and use inner translations rather than language packages you need to install on every machine where you deploy your application. 44 method is compatible with momentjs format method, it means you can use same format strings as you may have used in moment from front-end or node. js. Here are some examples 4You can also create date from ISO formatted strings 5 45 use contextualized methods for day names and month names as they can have multiple forms in some languages, see the following examples 6Here is the complete list of available replacements (examples given with 46)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 . 00Time zone offset HH. mmZZ+0000Time zone offset HHmmSome macro-formats are also available. Here are examples of each in some languages Codeenfrjahr 48 49 50 51 52 53 54 55 56 57 51 53 55 57Khi bạn sử dụng định dạng macro với 62, bạn có thể chỉ định ngôn ngữ để chọn ngôn ngữ mà định dạng macro sẽ được tìm kiếm trong đó 7An other usefull translated method is 63 8If you know momentjs, then it works the same way. 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, next Day, next Week, last Day, last Week và sameElse) 9để có cái nhìn 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 64 cuối cùng hiện tại. Vì vậy, 65, 44, 67 và các thuộc tính được bản địa hóa như 68 hoặc 69 sẽ được bản địa hóa một cách minh bạchTheo 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 70 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 71/ 72Nếu bạn thích mẫu 73, bạn có thể sử dụng 74 hoạt động giống như 75 nhưng dịch chuỗi bằng ngôn ngữ hiện tại 0Được cảnh báo rằng một số chữ cái như 76 không được hỗ trợ vì chúng không thể dịch một cách an toàn và 67 cung cấp cú pháp ngắn hơn nhưng ít khả năng hơn 42Bạn có thể tùy chỉnh hành vi của phương thức 75 để 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 1Bạ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 2Nếu ngôn ngữ đầu vào không được chỉ định, thay vào đó, 18 đượ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 81. 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 3Bạn có thể trực tiếp sử dụng các chuỗi trong bất kỳ ngôn ngữ nào để tạo một đối tượng ngày tháng với 82 4Bạ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. equivalents in the given language Or with custom format using 83 (use the 73 pattern for replacements) 5The equivalent method using ISO format is 85 6To get some interesting info about languages (such as complete ISO name or native name, region (for example to be displayed in a languages selector), you can use 86 7Please let me thank some projects that helped us a lot to support more locales, and internationalization features
The testing methods allow you to set a Carbon instance (real or mock) to be returned when a "now" instance is created. The provided instance will be used when retrieving any relative time from Carbon (now, today, yesterday, next month, etc. ) 8A more meaning full example 9Relative phrases are also mocked according to the given "now" instance 0Kể từ Carbon 2. 56. 0, 87 không còn ảnh hưởng đến múi giờ của phiên bản 88 mà bạn sẽ nhận được. Điều này được thực hiện bởi vì trong cuộc sống thực, 88 trả về một ngày có múi giờ từ 90. Và các bài kiểm tra nên phản ánh điều nàyBạn có thể sử dụng 91 để mô phỏng thời gian và thay đổi múi giờ mặc định bằng cách sử dụng 92 1Danh sách các từ được coi là sửa đổi tương đối là
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ả 93 và 94 đều có thể lấy múi giờ làm đối số thứ hai 2Xem 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. 95 sau đó sử dụng để di chuyển thời gian trong bài kiểm tra đơn vị của bạn khi bạn kể một câu chuyệnThêm nhập khẩu 96 ở đầu tệp 3Các getters được triển khai thông qua phương thức 97 của PHP. This enables you to access the value as if it was a property rather than a function call 4Các setters sau đây được triển khai thông qua phương thức 98 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 5Nế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 6Bạ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 7Bạ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 8Hàm PHP 99 đượ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ụ:. ) 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 00 hoặc 01. Bạn có thể đọc thêm về những điều này trên trang web PHP. , isset(), trống() 9Tất cả các phương thức 02 có sẵn đều dựa trên phương thức của lớp cơ sở DateTime. định dạng(). Bạn sẽ nhận thấy phương thức 03 được xác định cho phép in một thể hiện Carbon dưới dạng một chuỗi thời gian ngày tháng đẹp mắt khi được sử dụng trong ngữ cảnh chuỗi 0Bạn cũng có thể đặt định dạng __toString() mặc định (mặc định là 04) được sử dụng khi xảy ra hiện tượng tung hứng kiểu 1Là một phần của cài đặt 05 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ềnNế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 2Ghi chú. Để được hỗ trợ bản địa hóa, hãy xem phần 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 3_______1_______4Bạn có thể sử dụng phương pháp 06 để chuyển đổi nhiều thứ thành một phiên bản 08 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 5So 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 6Các phương thức đó sử dụng phép so sánh tự nhiên được cung cấp bởi PHP 08, 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 tên phù hợp là ___90_______09 (hoặc bí danh ____ 10). 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 7ồ. Bạn đã quên min() và max()? . Điều đó cũng được bao phủ bởi các phương pháp có tên thích hợp là 11 và 12 hoặc bí danh 13 và 14. Như thường lệ, tham số mặc định hiện tại nếu null được chỉ định 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 68 (ví dụ:. isToday()) theo một cách nào đó, thì 68 được tạo trong cùng múi giờ với ví dụ 9DateTime 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ó 17, 18 và 19. 20 là phiên bản nâng cao của 17 có thể lấy chuỗi định dạng ngày/giờ kỳ diệu, 22, nó phân tích cú pháp và áp dụng sửa đổi trong khi 18 và 19 có thể lấy cùng loại chuỗi, khoảng thời gian ( 25 hoặc 26) hoặc số lượng+đơ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 27 bằng cách sử dụng 28 và 29 0Để giải trí, bạn cũng có thể chuyển các giá trị âm cho 30, trên thực tế, đó là cách thực hiện 31P. S. Đừng lo lắng nếu bạn quên và sử dụng 32 hoặc 33, 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ụ 1Kể từ Carbon 2, bạn có thể đặt hành vi tràn cục bộ cho từng phiên bản 2Điều này sẽ áp dụng cho các phương pháp 34, 35, 36, 37 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ư 38 hoặc 39Trì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, Bạn có thể ngăn tràn với 40 3Phương pháp 41 cho phép bạn biết nếu tràn hiện đang được kích hoạt 4Từ phiên bản 1. 23. 0, kiểm soát tràn cũng có sẵn trên các năm 5Bạn cũng có thể sử dụng 42, 43, 44 và 45 (hoặc các phương pháp số ít không có 46 thành "tháng") để cộng/phụ một cách rõ ràng các thá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 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 7Bấ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 đó 8Khi 08 kéo dài 27, nó kế thừa các phương thức của nó, chẳng hạn như 49 lấy đối tượng ngày thứ hai làm đối số và trả về một thể hiện ________90____25Chúng tôi cũng cung cấp 51 hành động giống như 49 nhưng trả về một phiên bản 26. Kiểm tra để 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ư 54, 55, v.v. Tất cả các phương thức 51 và 57 và 58 đề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 ( 59 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 60, 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 49 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à 60Cá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 49 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 một thể hiện 25. Hàm 65 sẽ trả về 2 trong khi 66 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 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 68 (â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 9Các phương pháp này có kết quả cắt ngắn. Điều đó có nghĩa là 69 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 0⚠️ 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 70, điều này có thể mang lại cho bạn kết quả thấp hơn (_______90_______71) trong khoảng thời gian có nhiều ngày hơn (_______90_______72) do số ngày trong tháng có thể thay đổi (đặc biệt là tháng 2). 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ế 1Carbon 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 2Theo cách tương tự, bạn có thể sử dụng 73 và 74 trên bất kỳ đơn vị nàoNgoài ra còn có các chức năng lọc đặc biệt 75, 76 và 77, để 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 3Tấ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 4Con người đọc 78 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 để chống lại, và tất nhiên, nó mặc định là 68 nếu không được chỉ địnhPhươ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
Bạn cũng có thể chuyển 80 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. 81, 82 để nhận các công cụ sửa đổi trước hoặc sau đó, 83 để nhận các công cụ sửa đổi trước hoặc sau hoặc 84 (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ôngBạn có thể chuyển 59 làm tham số thứ 3 để sử dụng cú pháp ngắn nếu có ở ngôn ngữ được sử dụng. 86Bạ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). 87Phiên bản 88 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 86 được truyền, thay vào đó, 88 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
Tái bút. Các đối số 88 và 00 có thể được hoán đổi khi cần 5Bạn cũng có thể thay đổi ngôn ngữ của chuỗi bằng cách sử dụng 01 trước lệnh gọi diffForHumans(). Xem phần để biết thêm chi tiếtkể từ 2. 9. 0 tham số diffForHumans() có thể được truyền dưới dạng một mảng 6Nếu đối số bị bỏ qua hoặc được đặt thành 86, thì chỉ có 03 được bật. tùy chọn có sẵn là
Use the pipe operator to enable/disable multiple option at once, example. 23You also can use 24, 25, 26 to change the default options and 27 to get default options but you should avoid using it as being static it may conflict with calls from other code parts/third-party librariesAliases and reverse methods are provided for semantic purpose
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 41. 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ấpPhương pháp 17 bản địa mạnh mẽ của 27 có sẵn nguyên vẹn. Nhưng chúng tôi cũng cung cấp một phiên bản nâng cao của nó. 20 cho phép một số cú pháp bổ sung như 45 và được gọi nội bộ bởi 46 và 47 7Làm tròn cũng có sẵn cho bất kỳ đơn vị 8Các hằng số sau được định nghĩa trong lớp Carbon 9_______15_______0Các phiên bản Carbon có thể được đánh số thứ tự (bao gồm CarbonImmutable, CarbonInterval và CarbonPeriod) 1Các phiên bản Carbon có thể được mã hóa và giải mã từ JSON. Since the version 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 48 trên bản cập nhật/cài đặt của nhà soạn nhạc để nâng cấp, sau đó điền vào giao diện 49 bị thiếu bằng cách bao gồm JsonSerializable. php 2Bạn có thể sử dụng 50 để tùy chỉnh số thứ tự 3Nế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 4Phương thức 51 cho phép bạn gọi hàm được cung cấp cho 52 hoặc kết quả của 53 nếu không chỉ định tuần tự hóa tùy chỉnhBạ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ư hoặc. Các macro carbon hoạt động giống như Laravel 54 TraitGọi phương thức 55 với tên macro của bạn làm đối số thứ nhất 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 5Lưu ý rằng phần đóng đứng trước 56 và sử dụng 57 (có sẵn từ phiên bản 2. 25. 0) thay vì 58. Đâ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 ( 59, 26 và 61)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. 62 tương đương với 63. Đ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 64 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ạnMacro 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 6Macro cũng có thể được nhóm trong các lớp và được áp dụng với 65 7Kể 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 8Bạn có thể kiểm tra xem macro (bao gồm cả mixin) có khả dụng với 66 hay không và truy xuất lệnh đóng macro với 67 9Một macro bắt đầu bằng 68 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 69 và theo sau là một chữ cái viết hoa sẽ cung cấp một bộ thiết lập động 00Bạn cũng có thể chặn bất kỳ cuộc gọi nào khác bằng macro chung 01Và đoán xem? 02____0_______03Chú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 04Nế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 05Sau đó, thêm tệp nơi macro Carbon và mixin của bạn được xác định trong mục bootstrapFiles 06Kiể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 07Tín dụng. meteguerlek (#1191) 08Tín dụng. afrojuju1 (#1063) 09Tí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 10Tín dụng. vẽ lại (#132) 11Tí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; 12Macro 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 13Lớp CarbonInterval được kế thừa từ lớp DateInterval của PHP Phương pháp 72 và 73 mong đợi các số cho mỗi đơn vị theo cùng một thứ tự hơn 83 và có thể được sử dụng một cách thuận tiện với PHP 8 17Nếu bạn thấy mình kế thừa một phiên bản 75 từ một thư viện khác, đừng lo. Bạn có thể tạo một phiên bản 26 thông qua hàm 09 thân thiện 18Và ngược lại, bạn có thể trích xuất một 25 thô từ 26 và thậm chí bỏ nó vào bất kỳ lớp nào mở rộng 25 19Bạn có thể so sánh các khoảng thời gian theo cách giống như các đối tượng Carbon, sử dụng 81, 82 83, 84, 85, 86, 09, 88, 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 20CarbonInterval mở rộng DateInterval và bạn có thể tạo cả hai bằng cách sử dụng 21Khoả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 89 22Hoặc tạo nó từ một đối tượng 25 / 26 khác 23Lư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 92 tiện dụng, được ánh xạ dưới dạng triển khai 03, in khoảng thời gian cho con người 24 94 cho phép các đối số tùy chọn giống như 95 ngoại trừ 00 được đặt thành -1 (không giới hạn) theo mặc định. 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 98Đố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 25Cá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 26Bạ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 27Các yếu tố mặc định là
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 28Có 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) 29 99 phương thức và thuộc tính 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 30Bạn cũng có thể lấy thông số ISO 8601 của khoảng thời gian với ________ 162 ______ 00 31Cũng có thể lấy nó từ một đối tượng DateInterval kể từ trình trợ giúp tĩnh 32Danh sách khoảng thời gian ngày có thể được sắp xếp nhờ các phương pháp 01 và 02 33Ngoà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 34Bạn có thể truy cập và sửa đổi định nghĩa bước đóng bằng cách sử dụng 03 và 04 (trình thiết lập có thể lấy 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ứaBạn có thể gọi 06 để áp dụng khoảng thời gian động hoặc tĩnh hiện tại cho một ngày ( 27, 08 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 59 làm đối số thứ hai) 35Kết xuất các giá trị khoảng dưới dạng một mảng với 36Cuố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 10 với các đối số bổ sungTô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 37Một CarbonPeriod có thể được xây dựng theo một số cách
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 83 rất dễ hiểu về loại đối số và thứ tự, vì vậy nếu bạn muốn chính xác hơn thì 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 16, 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. Điều đó có nghĩa là nó có thể được chuyển trực tiếp đến vòng lặp 17 38Các tham số có thể được sửa đổi trong quá trình lặp lại 39Giống như DatePeriod, CarbonPeriod hỗ trợ 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ề 40Bạn có thể truy xuất dữ liệu từ khoảng thời gian với nhiều getters 41Cá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 42Lư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 18 vào một biến và sử dụng nó thay vào đó, bởi 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 43Bạn có thể thay đổi các tùy chọn bằng cách sử dụng 19 để 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 44Bạn có thể kiểm tra xem 2 kỳ có trùng nhau hay không 45Như đã đề 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ả lại 46Có 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. Hàm lọc phải trả về 59 để chấp nhận một ngày, 60 để bỏ qua nó nhưng tiếp tục tìm kiếm hoặc 22 để kết thúc quá trình lặp lại 47Bạn cũng có thể bỏ qua một hoặc nhiều giá trị bên trong vòng lặp 48 23 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 49Cá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 50Thứ 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 24 để thêm bộ lọc vào cuối ngăn xếp; . Bạn thậm chí có thể sử dụng 26 để 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ộ cho 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 27 rồi thêm từng bộ lọc mớiVí 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 51Lư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 52CarbonPeriod 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 53Theo 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 54CarbonPeriod có các phương thức trợ giúp 28 và 29 55Như tất cả các lớp Carbon khác, 61 có một phương thức 31 để chuyển đổi nó 56Bạn có thể kiểm tra xem thời gian có tự theo sau không. Period A follows period B if the first iteration date of B equals to the last iteration date of A + the interval of A. Ví dụ: 32 theo sau 33 (giả sử cả đầu và cuối đề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) 57Phương thức 34 cho phép bạn kiểm tra xem một ngày có nằm trong khoảng thời gian không 58So 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 34, việc loại trừ chỉ loại trừ ngày chính xác, vì vậy 59You can use start/end comparisons methods (that ignore exclusions) for more precise comparisons
Starting with Carbon 2, timezones are now handled with a dedicated class 49 extending DateTimeZone 60The default timezone is given by date_default_timezone_get so it will be driven by the INI settings but you really should override it at application level using date_default_timezone_set and you should set it to 50, if you're temped to or already use an other timezone as default, please read the following article. Always Use UTC Dates And TimesIt explains why UTC is a reliable standard. And this best-practice is even more important in PHP because the PHP DateTime API has many bugs with offsets changes and DST timezones. Some of them appeared on minor versions and even on patch versions (so you can get different results running the same code on PHP 7. 1. 7 and 7. 1. 8 chẳng hạn) và một số lỗi thậm chí chưa được sửa. So we highly recommend to use UTC everywhere and only change the timezone when you want to display a date. See our While, region timezone ("Continent/City") can have DST and so have variable offset during the year, offset timezone have constant fixed offset 61You also can convert region timezones to offset timezones and reciprocally 62Bạn có thể tạo một 49 từ các giá trị hỗn hợp bằng cách sử dụng phương pháp 09 63The same way, 53 return 60 if you pass an incorrect value (such as a negative month) but it throws an exception in strict mode. 55 is like 83 but throws an exception even if not in strict modeNế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 |