■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(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
#18812-0
グリニッジ標準時を Format 関数で表示形式を整える
はじめまして、宮野と申します。
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 でとまったままになります。


そこで質問なのですが、これをうまく意図どおりに表示させる方法がありましたら
アドバイスをいただけると非常に嬉しいです。

長文で失礼しました。
#18827-0
RE#18812:グリニッジ標準時を Format 関数で表示形式を整える
> 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等で自分のほしい形に変換するようにしましょう。
また、関数は引数,戻り値の型にも注意。
#18848-0
RE#18827:グリニッジ標準時を Format 関数で表示形式を整える
宮野です。
いなちゃんさんレスありがとうございます。

> これは、
> 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
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)