使用Carbon我收到“找不到文本月份”错误

时间:2019-05-08 07:33:30

标签: laravel-5 php-carbon

在我的Laravel 5.8应用程序中,我将日期转换为字符串格式,例如 02 May, 2019使用Carbon至今。我尝试:

setlocale(LC_TIME, 'en');
$filter_check_in_datepicker_till = Carbon::createFromFormat( 'dd MMMM YYY', $filter_check_in_datepicker_till )->locale('en_EN');;

但是出现错误:

  

“消息”:“找到了意外的数据。\ n找不到文本月份\ n数据丢失”,

哪种方法正确?

谢谢!

1 个答案:

答案 0 :(得分:1)

The Carbon docs说:

  

createFromFormat()主要是基本php函数DateTime :: createFromFormat的包装。

从文档中还不能完全清楚,但这意味着传递给@RestController @Api(tags = { "test" }, description = "test related resources") public class TestController { @Autowired ObjectMapper mapper; @RequestMapping(path = "/test", method = RequestMethod.POST) public void confirm(@RequestBody String requestBody) throws IOException { //do sth with body TestDTO dto = mapper.readValue(requestBody, TestDTO.class); //do sth with dto } } class TestDTO{ private String value; public String getValue() { return value; } public void setValue(String value) { this.value = value; } } 的$ format参数是createFromFormat()格式,不是是Carbon格式。因此,您应该使用DateTime(选中DateTime format reference)来代替dd MMMM YYY

d, M Y

作为参考,Carbon格式存在一些问题,因此即使\Carbon\Carbon::createFromFormat('d, M Y', '02, May 2019'); // returns 2019-05-02 12:48:26 接受了Carbon格式的字符串,您所拥有的也不起作用。检查Carbon format reference

  • createFromFormat实际上是“最小日期名称(从Su到Sa),可以翻译”。您真的希望dd为该月的零填充日期;

  • 您使用的日期格式包含逗号,但是格式字符串缺少该逗号;

  • DD实际上不是有效的Carbon格式字符串。您真的希望YYY为4位数字的年份;