2016-08-29 7 views
1

データベースに日付をvarchar形式で保存しています。私は入力日付から8桁の数字を取得したい。入力日付は28-08-2016または28、28/08/2016のような任意の形式にすることができます2016年8月などPHPの日付から数字を取得するには?

今、私はこれを実行しようとしました:

$country = mb_substr($this->country, 0, 4); 
    $username = $this->user_name; 
    $converted_date = date('Y_m_d-H-i-s', strtotime($this->date_of_application)); 
    $this-> member_id = $country.$username.$converted_date; 

私は、文字列と日付を連結しています。だから私の入力日は: 28/08/2016出力は私が取得しています:1970_01_01-04-00-00

私はphp.iniファイルのタイムゾーンを変更しました。

出力番号28082016としたいのですが、どうすればいいですか?

+0

問題は.... '01/07/2016'は7月1日か1月7日か?フォーマットを知っているなら、 'strtotime()'ではなく 'DateTime :: createFromFormat()'を使います( '28/08/2016'をUSフォーマットとして扱い、フォーマットがないと判断するなど)。 2838年) –

+0

データベースにvarcharとして日付を格納することは賢明ではありません。日付として保管してください –

答えて

1

'Y_m_d-H-i-s'は、日付の形式です。あなたは、これはそれを行う必要があります28082016に日付を連結したい場合はそう:

$converted_date = date('dmY', strtotime($this->date_of_application)); 
+0

私はIndian/Maheとして設定した時間帯で時間を取得していません。私はphp.iniファイルのデフォルトタイムゾーンをdate_default_timezone_set( 'Indian/Mahe')のようなコードに設定しました。それでも私は次のような出力を得ます:01011970 @WorkHardWork – Sid

0

あなたはDateTime Class

$input = '28-08-2016'; 
$input = str_replace("/", "-", $input); 
$date = new DateTime($input); 
echo $date->format('dmY'); // 28082016 

$input = '28 Aug 2016'; 
$input = str_replace("/", "-", $input); 
$date = new DateTime($input); 
echo $date->format('dmY'); // 28082016 

$input = '28/08/2016'; 
$input = str_replace("/", "-", $input); 
$date = new DateTime($input); 
echo $date->format('dmY'); // 28082016 
0

利用日時( 'DMY' のstrtotimeを(文字列では、あなたの日付))を使用する必要があります。

0

28/08/2016は、の日、月、および4桁の年の間違った表記です日付形式。
各部分は、このような場合でドット、タブやダッシュで区切る必要があります:入力日付形式は任意の形式とすることができ、あなたが持っているどのような形式、そしてわからない場合

$d = "28/08/2016"; 
$converted_date = date('Y_m_d-H-i-s', strtotime(str_replace("/", ".", $d))); 

print_r($converted_date); // "2016_08_28-00-00-00" 

http://php.net/manual/en/datetime.formats.date.php

関連する問題