■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
|
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った): |
■ ページの共有: |
[ サイト内検索 ]
![]()
カスタム検索
|
#18812-0グリニッジ標準時を Format 関数で表示形式を整える宮野浩史2000-03-29(水) 21:30
#18827-0RE#18812:グリニッジ標準時を Format 関数で表示形式を整えるいなちゃん2000-03-30(木) 09:40
#18848-0RE#18827:グリニッジ標準時を Format 関数で表示形式を整える宮野浩史2000-03-30(木) 12:13
#18827-0RE#18812:グリニッジ標準時を Format 関数で表示形式を整えるいなちゃん2000-03-30(木) 09:40
#18848-0RE#18827:グリニッジ標準時を Format 関数で表示形式を整える宮野浩史2000-03-30(木) 12:13
はじめまして、宮野と申します。 VB は見習いです(^^;。(VB6 : Win98SE を使用) 早速ですが、題名の件で悩んでいます。 普通のローカル日付時間を表示するときは、現在 Dim DateTime As String Dim dateLocal As String '日付と時間を合体 DateTime = Date & " " & Time dateLocal = Format(DateTime, "yyyy/mm/dd hh:MM:ss") Label1.Caption = dateLocal のようにしているのですが、グリニッジ標準時の場合 (モジュール内に宣言部は記述) Dim typSystemTime As SYSTEMTIME Dim GMT As String 'グリニッジ標準時を取得 Call GetSystemTime(typSystemTime) '結果を取り出して出力 With typSystemTime GMT = .wYear & "/" & .wMonth & "/" & .wDay _ & " " & .wHour & ":" & .wMinute & ":" & .wSecond End With Label2.Caption = GMT とすると、Label2.Caption にグリニッジ標準時を表示できるのはいいのですが たとえば DateAdd 関数などを使って、日本の時間を表示させるばあい (世界のどこからでも日本の時間を正しく参照できるように) dateJa = DateAdd("h", 9, GMT) のようにしているのですが、Label2.Caption = dateJa としたときに 年号の表示が2桁になってしまいます。( 00/03/29 10:10:10 のように) そこで、Format 関数を使い、 GMT = Format(GMT, "yyyy/mm/dd hh:MM:ss") として年号を4桁にしてやろうとしても、エラーはでないものの 表示される年号は2桁のままです。 さらに、これと同じ流れで時計の秒針を表示させないようにしようとしたのですが、 With typSystemTime GMT = .wYear & "/" & .wMonth & "/" & .wDay _ & " " & .wHour & ":" & .wMinute End With と最後の & ":" & .wSecond を削除しても、そのあと dateJa などに 代入すると秒のところは動かないものの、表示はまだされています ( 00/03/29 10:10:00 ) ずっと 00 でとまったままになります。 そこで質問なのですが、これをうまく意図どおりに表示させる方法がありましたら アドバイスをいただけると非常に嬉しいです。 長文で失礼しました。
いなちゃん2000-03-30(木) 09:40
> Dim DateTime As String > Dim dateLocal As String > > '日付と時間を合体 > DateTime = Date & " " & Time > dateLocal = Format(DateTime, "yyyy/mm/dd hh:MM:ss") > Label1.Caption = dateLocal これは、 Dim dateLocal As String dateLocal = Format(Now, "yyyy/mm/dd hh:MM:ss") Label1.Caption = dateLocal でOK。 現在の時間を取っておきたいのなら Dim DateTime As Date DateTime = Now です。 > のようにしているのですが、グリニッジ標準時の場合 > (モジュール内に宣言部は記述) > > Dim typSystemTime As SYSTEMTIME > Dim GMT As String > > 'グリニッジ標準時を取得 > Call GetSystemTime(typSystemTime) > > '結果を取り出して出力 > With typSystemTime > > GMT = .wYear & "/" & .wMonth & "/" & .wDay _ > & " " & .wHour & ":" & .wMinute & ":" & .wSecond > End With > > Label2.Caption = GMT > > とすると、Label2.Caption にグリニッジ標準時を表示できるのはいいのですが > たとえば DateAdd 関数などを使って、日本の時間を表示させるばあい > (世界のどこからでも日本の時間を正しく参照できるように) > > dateJa = DateAdd("h", 9, GMT) dateJa = Format(CDate(DateAdd("h", 9, CDate(GMT))), "yyyy/mm/dd hh:MM:ss") 正確に書くとこうですね。 日付を扱うのなら日付型を使いましょう。 日付を扱う場合は特に明示的に型変換した方がいいです。 日付型のデータを文字型に直接セットするとコントロールパネルで設定された 形(YY/MM/DD等)に変換されてセットされます。 したがってパソコンが変わると結果が違うなんてことになります。 この場合はFormat等で自分のほしい形に変換するようにしましょう。 また、関数は引数,戻り値の型にも注意。
宮野浩史2000-03-30(木) 12:13
宮野です。 いなちゃんさんレスありがとうございます。 > これは、 > Dim dateLocal As String > dateLocal = Format(Now, "yyyy/mm/dd hh:MM:ss") > Label1.Caption = dateLocal > でOK。 そのとおりでした。 Now を使えば、Date と Time で面倒なことなんてする必要なかったんですね(^^;。 > > のようにしているのですが、グリニッジ標準時の場合 > > (モジュール内に宣言部は記述) > > > > Dim typSystemTime As SYSTEMTIME > > Dim GMT As String (snip) > > dateJa = DateAdd("h", 9, GMT) > dateJa = Format(CDate(DateAdd("h", 9, CDate(GMT))), "yyyy/mm/dd hh:MM:ss") > 正確に書くとこうですね。 この通りにやったらグリニッジ標準時からの時間の表示形式を制御できるようになりました。 ありがとうございます! > 日付を扱うのなら日付型を使いましょう。 > 日付を扱う場合は特に明示的に型変換した方がいいです。 > 日付型のデータを文字型に直接セットするとコントロールパネルで設定された > 形(YY/MM/DD等)に変換されてセットされます。 > したがってパソコンが変わると結果が違うなんてことになります。 > この場合はFormat等で自分のほしい形に変換するようにしましょう。 > また、関数は引数,戻り値の型にも注意。 そうなんです!コンパネの地域の設定にまどわされてしまうので 実はこれも悩んでました。日付型にすればよかったんですね♪ またひとつ賢くなった感じです。 ありがとうございました。
このページと関連する記事:
#17255-0日付の表示について2000-12-20(水) 17:19#317-2「now」から日付のみ取り出す2003-05-14(水) 21:05
#45100-0数値変数からDATE型の変換方法2001-07-18(水) 02:33
#1407-0Date型のカラムの更新1999-09-09(木) 11:33
#2695-1RE#2692:APIのGetSystemTimeの使い方について1999-08-05(木) 14:06
#296-1日付と時刻の処理2002-05-21(火) 01:20
#18590-0世界標準時刻(GMT/UTC) - 再度2001-11-03(土) 01:21
#18263-0Date型2001-10-15(月) 12:51
#14905-0Time関数について2001-03-07(水) 15:24
#16560-0指定した時間までの経過時間を出す方法2001-06-08(金) 13:59