2017-04-06 6 views
1

をそれを使用する私は、次のオランダ語の文字列の日付を持っている:変更オランダ語から英語への日付文字列のstrtotimeで

dinsdag, 18 april 2017 

は今、私は日と月を削除したい、と私は、次の例でそれを行うことができますしかし、それはオランダ語とstrtotimeでは英語の文字列でのみ動作するため、動作しません。

$stripDay = date('d',strtotime($date)); 
$stripMonth = date('m',strtotime($date)); 

他のオプションがあるかどうかを確認して、機能することを示すstrptime機能が見つかりました。

$format = '%l, %d %m %Y'; 
setlocale(LC_TIME, 'NL_nl');  
setlocale(LC_ALL, 'nl_NL'); 

最初にフォーマットを設定してから、ロケールを設定しました。しかし、私は次のコードを使用しても、それは私に1を返します。

$stripDay = date('d',strptime($date)); 
$stripMonth = date('m',strptime($date)); 

誰かが私がここで間違ってやっているものを私に説明できますか?

答えて

1

英語日とオランダの日が含まれている配列を定義することができ、その後、あなたは、このような英語の文字列でオランダの文字列を置き換えることができます。

<?php 
    function dutch_strtotime($datetime) { 
     $days = array(
      "maandag" => "Monday", 
      "dinsdag" => "Tuesday", 
      "woensdag" => "Wednesday", 
      "donderdag" => "Thursday", 
      "vrijdag" => "Friday", 
      "zaterdag" => "Saturday", 
      "zondag" => "Sunday" 
     ); 

     $months = array(
      "januari" => "January", 
      "februari" => "February", 
      "maart"  => "March", 
      "april"  => "April", 
      "mei"  => "May", 
      "juni"  => "June", 
      "juli"  => "July", 
      "augustus" => "August", 
      "september" => "September", 
      "oktober" => "October", 
      "november" => "November", 
      "december" => "December" 
     ); 

     $array = explode(" ", $datetime); 
     $array[0] = $days[strtolower($array[0])]; 
     $array[2] = $months[strtolower($array[2])]; 
     return strtotime(implode(" ", $array)); 
    } 
    $date = "woensdag 22 oktober 2014 08:41:42"; 
    echo date("l d-m-Y H:i:s", dutch_strtotime($date)) . "<br />"; 
    echo date("d-m-Y", dutch_strtotime($date)); 
?> 
+0

どうすればよいですか? –

+0

@HuubSこれを確認してくださいhttp://phpfiddle.org/main/code/k51z-9n6j –

+0

完璧な答え、ありがとう。私はそれを解決策としてマークしました。それでも私はこのようにしなければならず、それを日時にするのではなく、ちょうどうまくいきません。ありがとう! –

0

あなたはIntlでPHPを実行している場合、あなたはかなりIntlDateFormatterクラスを使用することができます独自の翻訳転がりより:それはそれゆえ(通常 PHPの日付の書式に違うよう

$df = IntlDateFormatter::create(
    'nl_NL', 
    IntlDateFormatter::FULL, 
    IntlDateFormatter::FULL, 
    'Europe/Amsterdam', 
    IntlDateFormatter::GREGORIAN, 
    'eeee, d MMMM yyyy' 
    ); 

// since the time is omitted from the string 
// it uses 00:00 - which meant the timestamp 
// was an hour off for me in the UK so it 
// was rolling the date back to 23:00 the 
// previous day. Forcing UTC sorts this. 
$df->setTimeZone('Etc/UTC'); 

// outputs '2017-04-18' 
echo date('Y-m-d', $df->parse('dinsdag, 18 april 2017')); 

をあなたはおそらくかかわらず、便利なICU date format guideが必要になりますその日の「eeee」)。

関連する問題