在我的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数据丢失”,
哪种方法正确?
谢谢!
答案 0 :(得分:1)
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位数字的年份;