2013-11-23 76 views
2

我目前正在使用返回日期的API。這些日期從來沒有相同的格式。例如;我有時會得到像1987/10/12這樣的日期,或者有時它只是返回一年。僅將年份轉換爲PHP中的日期時間

我試圖將此日期轉換爲我可以導入到我的mysql數據庫的格式,但它始終使用當前時間戳自動完成日期。

$item['released'] = "1989"; 
var_dump(strtotime($item['released'])); 

這將返回星期四,1989年11月23日十一時53分53秒格林尼治標準時間(加日/月/年,時間與正確的年份當前的時間戳)

這是爲什麼,我怎麼能告訴它必須是像1989/01/01 00:00:00 或者我應該以另一種方式來看待這個?

感謝

+0

[mktime()](HTTP:// WWW。 php.net/function.mktime) –

+0

「這些日期永遠都不是相同的格式。」你爲什麼不發表這些日期的典型例子。另外,1987/10/12 - 是10月12日還是12月10日? – Cups

+0

我只是不會返回當它不可用的月份或日期。它在美國格式btw – kendepelchin

回答

1

從你的問題和評論(「我只是沒有在美國的格式返回一個月或一天,當它不存在,它BTW」)我會假設,你可能的日期是:

  • 1987年12月10日
  • 1987年至1912年

正確?

如果是這樣,你可以使用類似:

$arr = explode('/', $input); 
    $modifiedInput = $arr[0] . '/' . 
      ((isset($arr[1])) ? $arr[1] : '01') . '/' . 
      ((isset($arr[2])) ? $arr[2] : '01') . 
      ' 00:00:00'; 

$ modifiedInput將是 '1987年12月10日00:00:00' 的第一個可能的輸入,「1987年12月1日00: 00:00'爲第二,'1987/01/01 00:00:00'爲第三。

如果API可能會返回尾隨斜槓(如 '1987年至1912年/'),你將需要修改的條件三元運營商...

+1

更好的例子是使用'[this demo](https://eval.in/72800)**''sscanf()'函數。 –

相關問題