Date型の書式について

8 件の投稿を閲覧中 - 1 ~ 8 件(全 8 件)
  • 著者
    投稿
  • #7026
    TENTEN
    一般参加者

    お世話になります。

    Date型について確認させてください。

    接続先コンポーネント:「日付格納変数」の起動メソッド情報でメソッド:「日付データを設定する」、取得方法:「固定値」で今日(2023/3/15)の零時をセットしたい場合、どの様に記述するのでしょうか。

    ためしに以下を与えたのですが、次に起動メソッド情報を開いたときは「現在地はNULLです」となってしまい、受理されていない様です。

    Wed Mar 15 00:00:00 ST 2023
    2023/03/15
    2023/03/15 00:00:00
    “Wed Mar 15 00:00:00 ST 2023”
    “2023/03/15”
    “2023/03/15 00:00:00”

    当方Java未経験で、そもそも Date 型がどういうものなのかが判っていません。
    コンポーネントリファレンスには Date と書かれているだけで、「Date 型なのはわかるのだけど、具体的にどう記述すれば良いのでしょう?」なのです。

    #7027
    TENTEN
    一般参加者

    訂正です。
    誤 ST
    正 JST

    #7029
    MZPlatformユーザー会
    サイト管理者

    お問い合わせありがとうございます。

    日付格納変数のメソッド「日付データを設定する(Date)」の引数はDate型ですが、変数に直接固定値(文字列)で日付を設定できないため、[カレンダー]コンポーネントを使ってDateオブジェクトを設定する必要があります。
    「カレンダー」という名前ですが、時刻に関する処理を行うコンポーネントとお考えください。
    メソッドに「カレンダーを現在時刻に設定()」、「Dateオブジェクトの取得()」があるので

    ーーー●ーーー[カレンダー カレンダーを現在時刻に設定()]
       ---[日付格納変数 日付データを設定する(Date)
           メソッド戻り値 カレンダー Dateオブジェクトの取得]
    とすると、変数の中に現在時刻のDate値が設定できます。
    メソッド「カレンダーを書式指定で設定(String, String)」を使うと、固定値で[カレンダー]コンポーネントに日時を設定可能です。(引数例 引数0:YYYY/MM/dd 引数1:2023/03/03)

    その他に[日付入力フィールド]や[日時選択]ダイアログからもDateオブジェクトを取得することができます。また、[テーブル]の日付型列からセル値を取得したときもDate型の値になります。現在時刻の取得のみを目的とする場合は[システム情報]からも取得できます。
    Dateオブジェクトはミリ秒までの値を含む時刻を表すオブジェクトです。日付の加算、減算などもでき、文字列として見ると「YYYY-MM-DDThh:mm:ss.sssZ」という形式になります。

    以上、日付格納変数に固定値で値を設定できず、ご不便をお掛けいたします。
    ご不明な点、ご要望とうございましたら、どうぞ再度ご連絡ください。

    #7031
    TENTEN
    一般参加者

    ご回答ありがとうございます。

    Date型に固定値を設定する手順、理解したしました。 そのあたりの説明が公式マニュアルやチュートリアルに記述されていれば場所を教えてください。 そちらにも目を通したく思います。

    アドバイスの通り、メソッド「カレンダーを書式指定で設定(String, String)」で固定文字列をセットし、Date型のテーブルコンポーネントにエコーさせてみたのですが、結果が正しくありません。
    “2023/03/17 12:34:56” を与えると “2023/01/01 0:34:56” と不完全に設定されてしまいます。
    アプリケーションを添付いたしますので、お手数ですが添削いただけると幸いです。

    #7033
    MZPlatformユーザー会
    サイト管理者

    ご連絡ありがとうございます。
    大変お手数ですが、拡張子「.mzax」のファイルはそのままでは掲示板にUploadできないため、ZIPファイルに圧縮するなどして、再度お試しいただけないでしょうか。

    ファイルを拝見する前ですが、Date型の日付のフォーマットについては、カレンダーコンポーネントのJavadocの「setFormattedCalendar(String,String)」の項をご覧ください。
    https://ssl.monozukuri.org/mzplatform/mzpf_docs/3.6/docs/javadoc/jp/go/aist/dmrc/platform/beans/util/PFCalendar.html

    また、Oracleのサイトの『Java Platform Standard Edition 8ドキュメント クラスSimpleDateFormat』にはさらに詳しい説明があります。
    https://docs.oracle.com/javase/jp/8/docs/api/java/text/SimpleDateFormat.html

    メソッド「カレンダーを書式指定で設定(String,String)」の引数0が書式、引数1が日付を表す文字列です。「/」の全角半角なども影響する可能性もありますので、最初にアルファベットと数字のみで設定してみると判りやすいかと思います。(例:引数0:yyyyMMdd 引数1:20230317)
    なお、日本語ロケール環境では特に「a(=午前・午後)」「E(=曜日名)」の書式に対する文字列は日本語で与えないと設定できない可能性があります。
    (例 ha=12pm(×) 12午後(○))

    チュートリアルとしては、『エクセル連携導入チュートリアル』(応用編)P12-P14 に日付型データを書式指定した文字列に変換する機能を作成している箇所がございます。

    以上お試しいただき、ご不明な点がございましたら、どうぞ再度ご連絡ください。
    よろしくお願い申し上げます。

    #7035
    TENTEN
    一般参加者

    ご回答ありがとうございます。

    チュートリアルはこれから目を通してみますので、取り急ぎ zip ファイルを添付いたします。

    なお、Javadoc は「InternetExplorerモードで再読み込みする」でも結果は変わりませんでした。(chromeと同じ見え方をします)

    「クラス名」のリンクをコンテキストメニュー->「新しい Internrt Exproler モード]タブでリンクを開く」でも同様でした。

    あと、本質問とは直接関係ないのですが、テーブルコンポーネント「列型」も何を与えれば良いのかわからないでいます。 MZ の使い方がだんだんわかって来たのは良いのですが、色々やろうとすると Javadoc が見えないと先に進めない状況になりつつあります。

    添付ファイル:
    #7037
    TENTEN
    一般参加者

    度々すみません。
    MZをインストールしたフォルダに javadoc があったのでこちらを見てみます。

    #7038
    TENTEN
    一般参加者

    Date型はチュートリアルを読んで解決に至りました。
    「書式を示す文字列」は yyyy/MM/dd HH:mm:ss が正解でした。

8 件の投稿を閲覧中 - 1 ~ 8 件(全 8 件)
  • このトピックに返信するには、ログインしてください。