Спасибо за создание этой библиотеки, вы точно опытный PHP-разработчик!
Хочу предложить небольшую доработку: добавить поддержку наносекунд.
- ToRfc3339String может поддерживать наносекунды, поскольку time.RFC3339NANO имеет такой формат и соответствует JSON.stringify в JavaScript.
- При создании Carbon из временной метки, пожалуйста, обеспечьте настоящую поддержку наносекунд, а не фиктивную, когда десятичные дроби после деления на 1e9 просто отбрасываются.
- В методе 2 нельзя просто использовать количество битов для определения единицы времени, так как могут быть временные метки с менее чем 10 битами, например, 9 битами. Это означает, что соответствующие микро-, милли- и наносекунды будут отличаться от 13, 16 и 19 соответственно. Лучше позволить пользователю самостоятельно указывать единицу времени.
- В том же методе 2, почему часовой пояс передается здесь? Разве его не следует преобразовать в строку перед передачей?
Временные метки после 2001-09-09 09:46:40 имеют 10 бит.