サポート » 使い方全般 » カスタムフィールドの値から「年」や「月」を取り出す?

  • 解決済 ioxrxogi

    (@ioxrxogi)


    ACFを使ってカスタムフィールドを設定しています。

    日付として、フィールド名 pub_date、フィールドタイプ テキストで設定しています。
    「年」と「月」を取り出すのに、

    <?php
      $now0 = post_custom('pub_date'); //創業日
      $now2 = date("Y",strtotime($now0)); //年(****)
      $now3 = date("m",strtotime($now0)); //月(**)
      echo $now0,'<br>',$now2,'<br>',$now3;
    ?>
    pub_dateが2016/11/05だと、
    2016/11/05
    2016
    11

    と出力されるのですが、
    pub_dateの値として、2016/11というふうに月までのものしかないものがあります。
    そうすると、

    2016/11
    1970
    01

    と出力されてしまいます。

    日付なしを考慮に入れてないので当然といえば当然なのでしょうが、

    日付がないものを判別できれば何とかなるような気がするのですが、
    どうやって判別するのか皆目わかりません。

    どなたかお知恵をお貸しください。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • 文字列pub_dateの文字列長が7文字以下なら日無しデータとして判定したらいかがですか?
    2016/1/1で8文字
    2016/1で6文字
    2016/10では7文字
    ただし、2016/10/の様なデータがあると識別出来ないので末尾が/なら1文字減らす必要がありますが

    トピック投稿者 ioxrxogi

    (@ioxrxogi)

    ありがとうございます。

    文字の長さを判別して、日付がないものには /01 を付けることで無事できました。

    $now1 = strlen($now0);//文字の長さ
    if($now1 > 7){
         $now4 = $now0;
    }else{
         $now4 = $now0."/01";
    }
    • この返信は7年、 5ヶ月前にioxrxogiが編集しました。
2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「カスタムフィールドの値から「年」や「月」を取り出す?」には新たに返信することはできません。