2016-04-10 4 views
1

データで調整できないばかげた文字列があり、一貫性のある方法でタイムスタンプに変換する必要があります。文字列からのタイムスタンプPHP

5162016

時には2桁の月、時々先行ゼロ時々ません。

私はDateTime

$time = \DateTime::createFromFormat("njY", "5162016"); 
$timestamp = $time->getTimestamp(); 

を使用してみました私はnjYmdYの両方を試してみましたが、両方は、任意のアイデアをいただければ幸いです05/01/0020

に変換し、タイムスタンプを返します。

+0

http://php.net/strtotimeに掲載されていますか? – Utkanos

+1

おそらく、文字列の長さをチェックできます。しかし、1日の部分が一貫して先行ゼロを示さない限り、1122016を1月12日から11月2日に区別することは不可能です。 –

答えて

1

データを正規化して、月が常にゼロになるようにします。月の日は、常に先頭にゼロと2桁の数字であれば

$normalizedDate = str_pad("5162016", 8, 0, STR_PAD_LEFT); 
$time = \DateTime::createFromFormat("mdY", $normalizedDate); 
$timestamp = $time->getTimestamp(); 

こののみ作品。

+0

日の部分に先行ゼロがあるかどうかは不明です。存在しない限り、これは信頼性をもって使用することはできません。 –

+0

したがって、月と日の両方に先頭に0を付けることができますか? 1つの時間はちょうど1月、別の1日、いくつかの時間両方?それらを区別する方法はありません – Federkun

+0

おそらく組み合わせ?唯一信頼できるセクションなので、最後の4つを削除してください。残りの文字を数えます。 2と4の両方が信頼できるものでなければなりません。私はおそらく、最初の数字が0または1でない場合、おそらく1桁の月があり、それを0で埋めることができると思います。それ以外の場合は、2桁の月があり、その日は1桁です。このようなことは可能でしょうか? –

関連する問題