システム時刻の表示形式を変更する方法

このQ&Aのポイント
  • Windows XP Professionalを使用している場合、コマンドプロンプトで時刻を表示すると前ゼロがつかずに空欄となる形式になります。
  • この問題を解決するためには、コントロールパネルの地域と言語のオプションのカスタマイズで時刻の形式を「HH:mm:ss」と設定する必要があります。
  • また、環境変数として時刻の表示形式を変更する方法や、SETコマンドを使用して変数を設定する際に前ゼロにフォーマットを指定する方法もあります。
回答を見る
  • ベストアンサー

システム時刻の表示形式の変更方法

WindowXP Professionalを使用しています。 コマンドプロンプトにおいて、 >TIME とすると > 9:18:22.48 というように、時間の部分に前ゼロがつかずに空欄となる形式だったため、 コントロールパネルの地域と言語のオプションのカスタマイズで、時刻の形式を「HH:mm:ss」としました。 しかしながら >TIME とすると、やはり > 9:18:22.48 となっており、TIMEをコマンドとして >TIME /T とすると、 >09:18 と戻ります。 環境変数としての時刻の時間の部分の表示形式を変更するにはどうしたら良いのでしょうか? もしくはSETにて、変数を設定する時に、前ゼロにフォーマットを指定する方法があれば、それでも良いのですが、時刻を[09]という形で扱いたいです。 ご存知方がいらっしゃいましたら、教えていただけますでしょうか? よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.2

> >DATE > とすると、2桁だった表示が4桁に変更されたので、 こちら、知りませんでした。 MS-DOS(コントロールパネルは無い)の時代から、dateコマンドってそのままだと思っていました。 欧米ですと、dd-mm-yyのような表記もあるので、なるほどです。 -- > 別プログラムにしないと 環境さえ整ってしまえば、プログラムはものの数行の簡単なもので良いんですが、そこまでが大変だったりします。 一応、Cの入門用のwebページの紹介と、サンプルプログラムをば…。 くぼっちのC言語入門 http://www.geocities.co.jp/SiliconValley-SanJose/5780/c00.html プログラム time2 初心者のためのポイント学習C言語 - time http://www9.plala.or.jp/sgwr-t/lib/time.html を参考に、 -----time2.c----- #include <stdio.h> #include <time.h> int main(void) { time_t timer; struct tm *t_st; time(&timer); t_st = localtime(&timer); printf("%02d:%02d:%02d\n", t_st->tm_hour, t_st->tm_min, t_st->tm_sec); return 0; }

参考URL:
http://www.geocities.co.jp/SiliconValley-SanJose/5780/c00.html
sky_blue
質問者

お礼

お返事が大変遅れてしまって申し訳ありませんでした。 > 環境さえ整ってしまえば 確かにそうですよね・・・ 環境を作るまでが大変ですよね(^^; 私自身はCは使ったことがないので、 頂いたコードも一見よく分からないのですが、 これを機会にちょっと勉強しようかと思っています。 OKWebからのNoticeメールで、回答頂いたのを知りました。 お礼が送れましたこと、本当に申し訳ございませんでした。 (回答をメール配信にしていたつもりだったのですが・・・--;) ご回答、本当にありがとうございました。

その他の回答 (1)

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.1

正確な論拠はないですが… こちら、timeコマンド(内部コマンド)の使用として定められた書式だと思います。 timeコマンドは環境変数やコントロールパネルの設定を見ないので、質問の内容の処理は出来ないと思います。 -- HH:mm:ss形式で時刻を表示するプログラムを作る対処法が比較的簡単なように思います。(スキル次第ですが…)

sky_blue
質問者

お礼

お返事ありがとうございます。 地域と言語のオプションで、日付の表示設定を西暦2桁から4桁に変えると、コマンドプロンプトで >DATE とすると、2桁だった表示が4桁に変更されたので、時刻の表示設定もそこの変更でいけるのかと思っていたのです。 (うーん、どうして日付はOKで時刻はダメなんでしょう・・・残念です!) やっぱり別プログラムにしないといけないのですね。 ありがとうございました。

関連するQ&A

  • 日付と時刻の表示方法

    コマンドプロンプトにて、日付と時刻を1行の中に ”2009/08/20 11:26” のように出力させる方法があれば教えてください。 コマンドプロンプトにて、以下のようにそれぞれ別個に出力させることはできました。 date /t 2009/08/20 time /t 11:26 しかし、日付と時刻を1行の中に出力できないので、おわかりになる方がおられればご回答、お願いします。

  • Excel 時刻の計算方法

    Excel 時刻の計算方法 セルA 10/26/2010 06:54:32 セルB 10/27/2010 12:34:56 このような状態で、セルCにhh:mm:ss形式でAの時刻からBの時刻までにかかった時間を表示させたいのですが どうすればいいのでしょう

  • MS-DOSでの日付表示

    MS-DOSコマンドで、日付や時刻の%date% %time%ですと、 yyyy/mm/dd hh:mm:ssの表示になります。 バッチファイルを作成して、フォルダ名の頭に日付時刻をつけたいんですが、 yyyymmdd hhmmss の表示形式にする方法が分かりません。 よろしかったら教えて頂けませんでしょうか。

  • C# 時刻 表示

    恐れ入ります。 C#で現在時刻の表示方法をお教えください。 通常、*時○分△秒という表示ですが、今回は秒の形式は△.△という形で秒の単位を小数点1桁まで表示したいのです(時間そのものの正確さを要求しているわけではありません。1秒以内に発生する動作の時間を区別したいためです)。 秒までならば、 DateTime.Now.ToString("hh:mm:ss")なる形で得られますので、これを真似して DateTime.Now.ToString("hh:mm:ss.s")としても表示上は確かに秒の小数点まで出力されますが、 Thread.Sleep(100) というメソッドをfor文の中に入れて、0.1秒間隔で表示させることによって確認しようとしましたが、 0.1秒きざみでの時刻表示は得られませんでした。 Thread.Sleep(100) は特に問題ないので、 DateTime.Now.ToString("hh:mm:ss.s") がうまく働いていないためと思われます。 .NETのライブラリも確認したのですが、探し方が悪いためか情報を得ることができませんでした。 上記、質問お分かりになる方はよろしくお願いします。

  • javaで時刻の判定

    String型のtimeに YYYY-MM-DD HH:MM:SS の形式である時刻が入っているとします. この時刻がYYYY年MM月DD日の20時00分00秒~23時59分59秒内であるかどうかを判定するにはどうしたらよいでしょうか? 文字列のままでは大小比較は困難な気がしますし、GregorianCalendar型もみてみたのですが、いまいち大小比較の仕方がわかりませんでした。 よろしくおねがいします

  • YYYYMMDDhhmmss形式の文字列を日付時刻に変換・計算する方法

    YYYYMMDDhhmmss形式の文字列を日付時刻に変換・計算する方法 お世話になっております。 今回の質問内容なのですが、 あるテーブルにYYYYMMDDhhmmss形式(varchar(14))の列がありまして、 この値の時刻計算を行いたいと思っております。 YYYY/MM/DD hh:mm:ss形式であれば、DATEADD関数で 計算が可能なのですが、やり方がわからず苦戦しております。 例えば1秒加算させたいと思い、以下のSQL文を実行してみたのですが、 SELECT DATEADD(second,1,(CONVERT(DATETIME,'20100312111111'))) 「文字列から日付/時刻に変換できませんでした。」というエラーが 発生してダメでした。 時刻部分だけ取り出して、それに時分秒を分ける「:」をつけて変換し 計算するという方法は極力避けたいと思っています。 何かいい方法がありましたら、ご教示のほどよろしくお願い致します。

  • PLSQL CHARの項目を使用した計算

    Oracle8iのストアドプロシジャを作成しています。 SELECT SYSDATE で取得したシステム時間から任意時間前の時刻を算出し、CHAR(16)の文字列(YYYYMMDDHHMMSSMS)にしたいのですが、 うまくいきません。 次のようなやり方をしています。 (1)システム時刻を取得し、CHAR型変数へ格納。 (2)時、分、秒ごとにCHAR型の変数へセット。 (3)TO_NUMBER関数でNUMBER型へ変換して、NUMBER型変数に格納。 (4)任意時間前の時刻の算出。 SQLPLUSの標準出力にログを出して確認したところ、分や秒(W_CHECK_SS )がマイナスになってしまいます。 どのようにすればうまくいくのかアドバイスをいただけたらと思います。 今は以下のように書いています。 CREATE OR REPLACE PROCEDURE TESTSP ( IN_KIJUN_TIME IN NUMBER --監視基準時間(秒) ) IS W_CURRENT_TIME16 CHAR(16); --システム時刻(16桁) W_CURRENT_TIME14 CHAR(14); --システム時刻(14桁) W_CURRENT_YYYYMMDD CHAR(8); --システム時刻(YYYYMMDD) W_CURRENT_HH NUMBER(2); --システム時刻(HH) W_CURRENT_MM NUMBER(2); --システム時刻(MM) W_CURRENT_SS NUMBER(2); --システム時刻(SS) W_CURRENT_HH_STR CHAR(2); --システム時刻(HH)CHAR型 W_CURRENT_MM_STR CHAR(2); --システム時刻(MM)CHAR型 W_CURRENT_SS_STR CHAR(2); --システム時刻(SS)CHAR型 W_CHECK_SEC NUMBER(5); --基準前時刻(計算用) W_CHECK_HH NUMBER(2); --基準前時刻(HH) W_CHECK_MM NUMBER(2); --基準前時刻(MM) W_CHECK_SS NUMBER(2); --基準前時刻(SS) W_CHECK_HMS CHAR(16); --基準前時刻(16桁) BEGIN /*-- システム時刻の取得 --*/ SELECT TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS') INTO W_CURRENT_TIME14 FROM DUAL; -- ◆DEBUG START DBMS_OUTPUT.PUT_LINE('・システム時刻14 = ' || W_CURRENT_TIME14); -- ◆DEBUG END /*-- 基準前時刻の計算 --*/ W_CURRENT_YYYYMMDD := SUBSTR(W_CURRENT_TIME14,1,8); W_CURRENT_HH_STR := SUBSTR(W_CURRENT_TIME14,9,2); W_CURRENT_MM_STR := SUBSTR(W_CURRENT_TIME14,11,2); W_CURRENT_SS_STR := SUBSTR(W_CURRENT_TIME14,13,2); W_CURRENT_HH := TO_NUMBER(W_CURRENT_HH_STR); W_CURRENT_MM := TO_NUMBER(W_CURRENT_MM_STR); W_CURRENT_SS := TO_NUMBER(W_CURRENT_SS_STR); -- W_CHECK_SEC := W_CURRENT_HH * 3600 + W_CURRENT_MM * 60 + W_CURRENT_SS - IN_KIJUN_TIME; W_CHECK_HH := W_CHECK_SEC / 3600; W_CHECK_SEC := W_CHECK_SEC - (W_CHECK_HH * 3600); W_CHECK_MM := W_CHECK_SEC / 60; W_CHECK_SS := W_CHECK_SEC - (W_CHECK_MM * 60); W_CHECK_HMS := W_CURRENT_YYYYMMDD || W_CHECK_HH || W_CHECK_MM || W_CHECK_SS || '00'; -- ◆DEBUG START DBMS_OUTPUT.PUT_LINE('・W_CHECK_HH = ' || W_CHECK_HH); DBMS_OUTPUT.PUT_LINE('・W_CHECK_MM = ' || W_CHECK_MM); DBMS_OUTPUT.PUT_LINE('・W_CHECK_SS = ' || W_CHECK_SS); -- ◆DEBUG END (以下省略) 【標準出力】 SQL> EXEC TESTSP(60); ・引数:監視基準時間(秒) = 60 ・システム時刻14 = 20070308222543 ・システム時刻(YYYYMMDD) = 20070308 ・W_CHECK_HH = 22 ・W_CHECK_MM = 25 ・W_CHECK_SS = -17 ※システム時刻[22:25:43]の60秒前は22:24:43なので、 [2007030822244300]という文字列を作成したいのです

  • 2つの時刻間の時間を計算したい。

    よろしくお願いします。 エクセル2010、OSはWindows7です。 例) セルA1 に時刻その1 セルB1 に時刻その2 というデータが入力されています。 時刻は、YYYY/MM/DD hh:mm の形式で入力されており、2つの時刻の差は24時間以上なので日付は異なります。 この2つのセルの時間差をhh:mmの形式で表したいですが、単純に引き算しただけでは思うようにいかないようです。 やり方を教えてください。

  • HP-UXのlsコマンドで日時書式を統一する方法

    一般的にUNIX系OSで ls -l コマンド実行した場合6ヶ月以上前に修正したファイルは、 時刻までは出力されません。 下記のような表示になってしまします。 # ls -l foo -rwxr-x--- 1 root root 3223 Nov 10 2004 foo このようなとき Linux だと 下記のようにlsコマドを実行するとファイルの修正日時に関わらず "YYYY/MM/DD HH:MI:SS"形式で表示してくれます。 ls -al --time-style=+'%Y/%m/%d %H:%M:%S' Solarisの場合でも ls -E コマンドを使えば、同じようなことができそうです。 しかし、HP-UXのlsコマンドの場合は、--time-style や -E オプションが使えません。 何か良い方法はないでしょうか? ls でなくとも ファイルのタイムスタンプが "YYYY/MM/DD HH:MI:SS"形式で取得できまれば、方法は問いません。

  • perlで変数をunix時間から時刻表示に変換したいがうまくできない

    変数に入ったUNIX時間を下記のようなperlコマンドで普通の時刻表示に変換したいのですが、 変数がうまく展開できません。 (↓のままだと、1970年1月1日になります) 'や"や\を組み合わせたらどうにかなるかと思うのですが、どうすればいいでしょうか? #! /bin/sh UX_TIME=113423423 perl -e 'print localtime($UX_TIME) . "\n"' exit 0 以上、よろしくお願いします。