2 返信 最新の回答 日時: Mar 23, 2017 7:24 PM ユーザー:user19752

    タイムスタンプ取得時におけるゼロ秒の時の戻り値について

    YukioTakaoka

      FileMaker を使用してシステム開発をしている皆さんの中ではご存じの方も多いかと思いますが、以下の関数を使用した場合の戻り値に問題があると思います。

       

      Get(タイムスタンプ)

      Get(ホストのタイムスタンプ)

      Get(タイムスタンプ)

      GetAsTimestamp ( テキスト )

      Get ( 時刻 )

      GetAsTime ( テキスト )

      など・・・

       

      これらの関数の戻り値のうち、時刻部分に期待する値の形式は「HH:MM:SS」の形式です。

      通常は「11:29:59」という具合に、「HH:MM:SS」の形式で値が戻されます。

      しかし、たまたま秒がゼロ秒だった場合の戻り値は、「11:30:00」という値を期待していますが、実際には「11:30」と言う具合に、秒の部分が省かれた値が戻されてきます。

       

      時刻の値であれば「HH:MM」の形式で「10:12」という値でも良いかもしれませんが、タイムスタンプ形式では、「YYYY/MM/DD HH:MM:SS」という形式が一般的であり、Get ( タイムスタンプ )関数に関するヘルプの記述にも『システムクロックに「2014 年 1 月 1 日 11: 30: 00」と表示されている場合、「2014/1/1 11: 30: 00」を返します。』と記載されています。

       

      従って、システム開発者は、Get ( タイムスタンプ )、Get(ホストのタイムスタンプ)関数の戻り値として、「YYYY/MM/DD HH:MM:SS」の完全な完全な形でデータが戻されることを期待していますので、0秒のときに秒が戻されないことで、開発者は知らずしらずにバグを生成することになります。

       

      ヘルプでも記載されているように、上記で示しましたタイムスタンプ関連関数および時刻関連関数の戻り値について、その時刻部分は「HH:MM:SS」の形式を基本として、秒がゼロ秒であった場合でも、秒部分が「:00」で表示されることが正しいように思います。

       

       

      上記に関連して、Time ( 時 ; 分 ; 秒 )関数では、第3引数の秒が必須となるため「Time ( 11 ; 30; 00 )」のように引数を指定しますが、この場合は「11:30:00」という様に秒まで含まれた値が戻されます。しかし「Timestamp ( Date ( 1 ; 1 ; 2014 ) ; Time ( 11 ; 30 ; 00 ) )」の戻り値は「2014/01/01 11:30」と、秒の部分が省略されてしまいます。

       

      さらに、時の部分が0時の場合は「0:」ではなく「00:」であって欲しいと思います。

      なぜなら分が1〜9分の場合は、10の位に「0」が補完され、「01」「02」・・「09」となるからです。

       

      これら時刻部分の秒が戻されない問題について、「テクニックでなんとかする」という解決策以外に、何か解決策をお持ちの方がいらっしゃいましたら、情報共有をさせていただけましたら幸いです。

       

      環境:FileMaker Pro 15.0.1~15.0.3

      OS:macOS Sierra、Windows 10