FileMakerでは、YearName関数を使えば日付の和暦を取得することができます。

ところが、この取得出来る和暦は、「平成20」といった書式なので、漢数字で使おうと思えば別に処理をする必要があります。
とりあえず作ってはみたものの、非常に面倒くさかったので、メモを。

コード

Let ( 
  [
    // 西暦の日付を変数に
    date = 日付型のフィールドか日付;

    // 年の処理
    yname = YearName ( date ; 0 ) ;
    yearName = Left ( yname ; 2 ) ;
    year = NumToJText ( Substitute ( yname ; yearName ; "" ) ; 0 ; 2 ) ;

    yearTenCol = If ( Left ( year ; 1 ) = "一" ; "十" ; Left ( year ; 1 ) & "十" ) ;
    yearOneCol = If ( Right ( year ; 1 ) = "〇" ; "" ; Right ( year ; 1 ) ) ;
    yearDate = If ( Length ( year ) > 1 ; yearTenCol & yearOneCol ; year ) ;

    year = yearName & yearDate;

    // 月の処理
    month = NumToJText ( Month ( date ) ; 0 ; 2 ) ;
    monthTenCol = If ( Left ( month ; 1 ) = "一" ; "十" ; Left ( month ; 1 ) & "十" ) ;
    monthOneCol = If ( Right ( month ; 1 ) = "〇" ; "" ; Right ( month ; 1 ) ) ;
    month = If ( Length ( month ) > 1 ; monthTenCol & monthOneCol ; month ) ;

    // 日の処理
    day = NumToJText ( Day ( date ) ; 0 ; 2 );
    dayTenCol = If ( Left ( day ; 1 ) = "一" ; "十" ; Left ( day ; 1 ) & "十" ) ;
    dayOneCol = If ( Right ( day ; 1 ) = "〇" ; "" ; Right ( day ; 1 ) ) ;
    day = If ( Length ( day ) > 1 ; dayTenCol & dayOneCol ; day ) ;

    // 結合して日付のテキストに
    str = year & "年" & month & "月" & day & "日"
  ]; 

  str

)

解説

4行目の「西暦の日付」の部分は、日付型のフィールドでも、日付のテキストでもどっちでもいいです。

年月日の各部分は1行でもかけますが、ifのネストは眺めていると訳が分からなくなるので、複数行に分けました。

年の上3行は、「平成20」を「平成」と「20」に分けて、「20」を「二〇」にするという処理です。

年月日ともに~TenColと~OneColという変数の部分がありますが、~TenColは10桁部分の処理(十を入れるのと、一の場合は十だけにする)を、~OneColは1桁部分の処理(〇の場合は空に)を行なっています。

最後に30行目で文字として組み立てています。

4行目を、「date = "2007/06/30";」とすると、「平成十九年六月三十日」となります。計算結果はもちろんテキストです。

FileMaker記事一覧

Template by JoomlaShine