我知道可能有一个简单的答案,但我已经尝试了几件事似乎没有任何效果。
我从JSON数组中获取以下数据:
{
"Id": 21973679,
"InvoiceNumber": 13,
"IssueDate": "14/08/2017",
"EulerID": 6162023,
"CustomerName": "Alderley plc",
"TotalAmount": "1,704.00",
"TotalTaxAmount": 0,
"Currency": "USD",
"DueDate": "13/09/2017",
"AmountDue": "0",
"Status": "Paid"
},
{
"Id": 21974783,
"InvoiceNumber": 23,
"IssueDate": "09/01/2017",
"EulerID": 6162023,
"CustomerName": "Alderley plc",
"TotalAmount": "11,000.00",
"TotalTaxAmount": 0,
"Currency": "GBP",
"DueDate": "08/02/2017",
"AmountDue": "0",
"Status": "Paid"
},
我正在尝试获取IssueDate和DueDate。两者都以dd / mm / yyyy格式存储。无论我做什么,php似乎都无法持续捕获它们。
$report_starting_date=$item1['IssueDate'];
$report_starting_date=date('d/m/Y',strtotime($report_starting_date));
对于第二项发票(23),如果我回复它将返回1的月份,它可以正常工作,这似乎有效,因为日期可以是dd / mm或mm / dd但是在第1项发票中(13)14不能一个月,所以PHP似乎将日期设置为01/01/1970。我不知道为什么我可以存储一个正确的项而不是另一个?
由于
答案 0 :(得分:5)
答案 1 :(得分:2)
试试这个:
$date = DateTime::createFromFormat('d/m/Y', $item1['IssueDate']);
相同的:
$date = date_create_from_format('d/m/Y', $item1['IssueDate']);
在$date
中您有DateTime
类的实例,因此您可以使用format()
方法打印价值$date->format('d/m/Y');
答案 2 :(得分:0)
格式' dd / mm / yyyy' strtotime
不支持。用破折号替换斜线可以解决您的问题。
$time = strtotime(str_replace('/', '-', $item1['IssueDate']);
$report_starting_date = date('d/m/Y', $time);
请注意,这更像是一种不完全失败的解决方法。 @ kchason的回答可能是更好的选择。
答案 3 :(得分:0)
您可以使用以下代码将日期字符串转换为日期。你需要供应 日期格式为第一个参数,日期字符串格式为第二个参数。
$date = DateTime::createFromFormat('d/m/Y', $item1['IssueDate'])->format('d/m/Y');
函数format()
以提供的格式将字符串作为字符串返回。