当ブログに掲載しているサンプルは、すべて利用者の自己責任という形でお願いします。
ただし、明らかな不具合がある場合、ご連絡いただければ、訂正記事を出します。
また、こちらのサンプルは、別のサイト等への公開、転載は一切禁止しています。
どうしてもと言う場合は、筆者にあらかじめご連絡ください。

テクてく Lotus 技術者 Slack に参加しよう!

2009年5月19日火曜日

タイムゾーン付の日付/時刻フィールドの値を取得する

テスト用のノーツDBを作っていたら、奇妙な現象が起きたので、ちょっと調べてみました。

奇妙な現象とは、日付/時刻フィールドについてで、値がなぜか標準時のタイムゾーンで保存されていたのです。
フィールドの設定は、「ローカルのタイムゾーンにあわせる」だったため、フォームを通して見たときは、日本時間になっていました。

この場合、@関数やLotusScriptはどのように時間を取得するのかきになったので、まずは@関数で取得してみました。
サンプルは、「datetimeF」という日付/時刻フィールドの値を@Promptで表示するものです。
@Promptはテキストしか表示できないので、datetimeFの値をテキストに変換しています。

datetimeFの実際の値は下図の通りです。


この状態で、サンプルを実行してみたら、こんな感じになりました(下図)。


どうやら、@Textで、テキストに変換する限りでは、自動でローカルのタイムゾーンにあわせてくれるようです。
LotusScriptで取得した場合にどうなるか?というのは次回にします。

@Prompt([Ok];"PCのタイムゾーン";@Text(@Zone));
@Prompt([Ok];"日付フィールドのタイムゾーン";@Text(@Zone(datetimeF)));

tm := "オプションなし: " + @Text(datetimeF) + @NewLine;
z0 := "オプション[Z0]: " + @Text(datetimeF;"Z0") + @NewLine;
z1 := "オプション[Z1]: " + @Text(datetimeF;"Z1") + @NewLine;
z2 := "オプション[Z2]: " + @Text(datetimeF;"Z2");

@Prompt([Ok];"日付フィールドの取得";tm+z0+z1+z2)


Notes/Dominoのアプリ開発ならこちらまで!
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

0 件のコメント: