• ベストアンサー

タイムゾーン? ※2009-07-03T02:38:01Z のTとZの意味

タイトルの通りなのですが、別のシステムで出力されたXMLを取り込む機能を作っています。 読み込み対象のXMLのDate要素(出力日付)が2009-07-03T02:38:01Zとあります。 内容のTとZはどこかのタイムゾーンかな?と思ってるのですが、どうすれば判断出来るのでしょうか? ちなみに自分の時計と比較したときの差は9時間ありました。 以上です、よろしくお願いします。

noname#89271
noname#89271

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

  • ベストアンサー
回答No.1

ISO 8601に定められる日付および時刻の形式です。 Tは日付と時刻の間に挟む区切りです。 Zは,タイムゾーンがUTCであることを示します。 日本標準時で書くなら, 2009-07-03T11:38:01+09:00 のようになります。 Visual Basicの場合,.NET Framework 2.0 SP1以降にDateTimeOffsetというクラスがあります。 Parseすることでタイムゾーンまで読み取ることができます。

noname#89271
質問者

お礼

Nオ]S6・ナ鬘BTelS噐ヲヘ|逑m<ラSWセムキu-$方ヲ・ mK#ェ>v;Ut爺_ モ・_ アヒ黒・9qスサゥ|0・冏(ェ゜ サY要セNn種洌・敘JエOz| エ・+8・・励ヒ 擱)kエハ・ ・O団w\/・=l轗ニ笳ョV週ヌ筰S セ利「ヲ K ォ繕`/ア# 垳#~・4CS篶・@e6トモ,メEr4dユ}醒jZ4ゥヲレ|lエTロ扱モV 0k yロfL 、・・「、m3E碾W4^ ?・ エ].7B+F゜~Jw 愼Oソ

関連するQ&A

  • SQLite 3.7.1 のタイムゾーンについて

    Windows XP に XAMPP をインストールし、PHPとSQLiteでページを作成しているのですが、 SQLite のタイムゾーンの取り扱いで不可解な点があるのでお教え願います。 「UPDATE xxx SET AA='AA', UDate='2010-11-21 19:15:10' WHERE ID= '321'」というSQLを実行すると、SQLiteには UDate がタイムゾーン分の時間が遅れて記録されます。 当然「UDate='2010-11-21 19:15:10'」は、SQL実行時の時間です。 SQLiteの確認は、firefoxのツール・SQLite Manager v0.65 です。 Windows XPのタイムゾーンはJST-9で合っているし、時計の時間は合っています。 PHP には「 date_default_timezone_set( 'Asia/Tokyo' ); 」を記述しているので間違いはないと思います。 実は「UPDATE xxx SET AA='AA', UDate=CURRENT_TIMESTAMP WHERE ID= '321'」を実行した時に、同じように時間がずれたので「CURRENT_TIMESTAMP」が理由だと思い PHP でタイムスタンプを作ってSQLを実行しても同じようにずれたの SQLite の仕様なのかな? と思っていますが、気持ちが悪いので正しく入力できる方法があれば直したいと思っています。 宜しくお願いします。

  • Win版Thunderbirdのタイムゾーン

    Windowsユーザーの友人からのヘルプですが、Macユーザーの私は助けてあげることができませんでした。お力添えのほどよろしくお願いします。 そもそもの彼女からのヘルプは、小遣い稼ぎのアンケートサイトのメールを開いたら 「安全な接続ができませんでした」 「www.mozilla.orgは不正なセキュリティ証明書を使用しています。」 と表示され、メール中のURLをクリックするとエラーになる、というものでした。 まず最初にWindowsのタイムゾーン設定を疑い、コントロールパネルから「日付と時刻」の確認をしてもらいましたが、時計は正しく、タイムゾーンも「大阪、札幌、東京」となっている、とのことでした。 彼女からのメールのソースを見ると、タイムゾーンがPSTになっているので過去の日時になってしまっています。念のため、普段使っているgmaiとは別に、契約しているプロバイダのメールアドレスを使って空メールを送ってもらいましたがこちらも同じでした。 それではと、Thunderbirdのタイムゾーンを確認したいのですがどこを見ればいいかわかりません。Mac版Thunderbirdでは図のように「Thunderbird」→「環境設定」でタイムゾーンの確認ができるのですが、Win版はメニューバーにこの項目がないようです。どこを見たらよいのでしょうか? 彼女の環境はWindows7、Thunderbirdのバージョンは38.4.0です、よろしくお願いします。

  • タイムゾーンとシステム時間とローカル時間の関係

    少々ややこしいですがお付き合い下さい。 Windows2000Server日本語版を日本で使用しています。 Windowsにはシステム時間とローカル時間というのがあり、システム時間はGMTを、そこからタイムゾーンで設定した時差を元にローカルタ時間が計算され参照できると思っています。(間違えであれば指摘して下さい。) 例えばローカル時間を変更すると(プロンプトでtimeなどで変更する。)その時間を元にGMTを計算しシステム時間を計算して、システム時間を書きなおすという方法が取られていると思います。 現在の状況と問題点 ・タイムゾーンはアメリカ中部時間(GMT-6時間)に設定されている。 ・ローカルタイムを例えば3:00に設定する。 ・恐らくココでシステム時間(GMT)が9:00になるはず。 ・この状況でファイルを更新したり、イベントログを見たりすると、時間がおかしい。具体的には時刻が18:00になる。 恐らく、ファイルの更新日付の計算がGMT+9である事から出てきているのですが、この9時間は日本の時差ではありますが、タイムゾーンで設定されている時間ではありません。(タイムゾーンはアメリカだから) どこで設定されている時間から算出されているのでしょうか? (言語の設定?それともなんか他に固定で持っているものがあるのでしょうか?)

  • タイムゾーンの設定について(CentOs)

    LAMPにてWEBを制作をしています。 linux系はちょこちょこ触ったことはあるのですが深く知らないといったレベルです。 ですので説明下手になり長くなりますが最後まで目を通して頂けたら幸いです。 調査→対応→現状までの流れを説明させていただきます。 --------------------------------------------------------------------- 現在、デバッグを行うためにシステム時間をちょこちょこ変えながらテストをしてるのですが 私の環境のみ 日付がAM8時で日にちが変わるという状態になり、いろいろ調べてるうちに タイムゾーンの問題という事にきづきました。 dateコマンドでタイムゾーンがPDTになっいるのを確認し /etc/sysconfig/clock が/America/Los になっていたので/Asia/Tokyoに修正。 reboot dateコマンド PDTから変わらず。 で、さらに調べて /usr/share/zoneinfo/Asia/Tokyo もしくは /Japanのファイルを/etc/locatimeにリンクしました。 reboot dateコマンド PDTから変わらず。 その後、 ・環境変数のTZにJSTをぶち込んだり ・sysconfig/clockをGMTで記述してみたりと とりあえずの処置で対応してたのですが 気持ち悪い&悔しいので再度調査したのですがどこもlocaltimeのリンクを直すような記事しか のってない状態で困っています。 その後私の環境のJapanもしくはAsiaTokyoのファイルそのものがPDTになちゃってるのではと思い、 正常に動いているメンバの環境から同ファイルをコピし環境に入れ込みました。 するとdataコマンドできちんとJSTと表示され、解決したかと思ったのですが rebootするとGMTに戻ってしまいました。 sysconfig/clockがその時、前の対応でGMTで記述してたのでそれが問題かと思い Japanに修正し、rebootしなおした所正常にJSTになりました。 原因はいまいちわからないけどとりあえず当初の目標は達成したかと思ったのですが 日付の変更を行った直後にdataコマンドを投げた所今度はタイムゾーンがEDTになりました… さらにsysconfig/clockの中身も/America/New_York になるという新展開に。。。 もうこうなってくるとさすがに何がなんだかわからなくなってしまいここで質問させて いただいた次第です。 何か原因が分かる方、もしくは対処方法がわかる方いましたら 参考URLだけでもいいので教えて頂けると助かります。 もし何か情報として足りない物があれば指摘していただければと思います。 また、説明下手な上に乱文になってしまい大変申し訳ありませんでした。 最後まで読んでいただいた方には感謝いたします。

  • 文字列から読み込んだ時刻の操作について。

    こんにちは。お時間のある時にお願いします。 文字列表記された時刻を、ある特定のフォーマットに変換し、尚且つタイムゾーンの計算をして、ソートさせるプログラムを組んでいます。 時間の加減算には、Calenderクラス、 String型からDate型に変換するには、SimpleDateFormatクラスが良さそうだ、と思って触っています。 ----- String strPreTime = "Sun, 11 Dec 2005 03:00:38 +0900"; //変換後時刻フォーマット -> 2005-12-11T03:00:38+0900 SimpleDateFormat sdf = new SimpleDateFormat(); sdf.setDateFormatSymbols(new DateFormatSymbols(Locale.US)); //日付の出力形式を設定 sdf.applyPattern("EEE, d MMM yyyy HH:mm:ss Z"); Date dat = sdf.parse(strPreTime); System.out.println("test1: "+dat); sdf.applyPattern("yyyy-MM-dd'T'HH:mm:ssZ"); String dat2 = sdf.format(dat); System.out.println("test2: " +dat2); ----- 出力結果: test1: Sun Dec 11 03:00:38 JST 2005 test2: 2005-12-11T03:00:38+0900 となりますが、test1の出力結果が、sdf.applyPattern("EEE, d MMM yyyy HH:mm:ss Z");で指定した出力形式になっておらず、頭を悩ませています。 どこを直せば、指定した通りの出力形式になるのか、教えてください。 また、Date型の時にタイムゾーンだけを抽出する、というのはどうしたらいいでしょうか?

    • ベストアンサー
    • Java
  • タイムスタンプを秒数で取得したい

    DB初心者で、PostgreSQL V.7.3.2 + PHP を使っています。 T_TIME というテーブルに、 日付を格納したTARGET_DATEと、 時刻を  〃 TARGET_TIMEというフィールドがあります。 このテーブルからタイムスタンプをセレクトしたいと思い、つぎのようなSQL文を 作成しました。 SELECT TO_TIMESTAMP(TARGET_DATE ||' '|| TARGET_TIME, 'YYYY-MM-DD HH24:MI') AS JIKOKU FROM T_TIME ところが、この結果は書式化された文字列のため時刻の比較を簡単に行うことができません。 なんとか書式化した形でなく、1970年からの秒数でタイムスタンプを取得したいのですが。 どうすれば良いのでしょうか。

  • dateコマンドで出てくるDST

    Windows 10 で動く Windows Subsystem for Linux が正式版になったので早速インストールして Ubuntu で動かしています。そこでコマンドラインから date コマンドを実行したところ以下のように出力されました。 Wed Nov 15 18:00:01 DST 2017 この DST とはなんでしょう? 普通なら JST 等のタイムゾーンが出る所ですよね? DST という名称のタイムゾーンがあるんでしょうか? (だとすると Daylight Saving Time と同じで非常に紛らわしいように思いますが)。 一体これはどういうことかと思い、 date '+%Z %z' をやってみたらこう出ます。 DST +0900 どうやら日本と同じようです。環境変数 TZ に Japan 以外の何か知らない国名がセットされているのかなと思って $TZ を出してみましたが空で、env | grep TZ で出力がないので TZ は完全にセットされていないようです。 じゃあ TZ を Japan にセットしたらどうなるのかというと、これは以下のように JST で出ます。(以下は最初の行が date のみ、次の行が date '+%Z %z' の出力) Wed Nov 15 18:04:49 JST 2017 JST +0900

  • 日付と時刻の表示方法

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

  • 日付の比較をしたいのですが・・・。

    当方JAVA初心者です。 質問させてください。 日付の比較をして、差を求めたいのですが、 ------------------------------------ Ex)2004/6/4(システム日付)と   2004/6/9で日付を比較し、   「差は5日」という結果を求めたい ------------------------------------ カレンダクラスのafterやbeforeは、前か後ろかしか 判断できないですよね? そこで、簡単に日付を比較し差を求めるというやり方はあるんでしょうか? それとも年月日を崩すなどして計算しないといけないのでしょうか? 過去にこのような質問があったらすいません。 よろしくお願いいたします。

    • ベストアンサー
    • Java
  • GMT時刻を任意のタイムゾーン時刻への変換方法

    Date型のGMT時刻をOSで設定したタイムゾーンに応じたローカル時刻に変換してくれる ことを期待して下記サンプル(SimpleDateFormatにTimeZoneを設定)を作成しました。 しかし、変換前後で時刻は変わりませんでした。 GMT時刻=2010/06/13 09:15:30 を作成。OSのタイムゾーンを日本に設定し、変換。 変換後の時刻は9時間後の2010/06/13 18:15:30を期待したのですが変換前後で変化は ありませんでした。下記がそのサンプルなのですが何か問題がありますでしょうか。 また、サンプルではOSからタイムゾーンを取得しているのですがブラウザのタイムゾーンを 取得することはできるのでしょうか。HTTP request headersにはタイムゾーン情報は無く JavaScriptを経由してとらないといけないという記述をどこかで見たことはあるのですが・・・。 【サンプル】 import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.TimeZone; public class TimeZoneTest { private static SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); public static void main(String[] args) { Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, 2010); cal.set(Calendar.MONTH, 5); cal.set(Calendar.DAY_OF_MONTH, 13); cal.set(Calendar.HOUR_OF_DAY, 9); cal.set(Calendar.MINUTE, 15); cal.set(Calendar.SECOND, 30); Date todayDate = cal.getTime(); System.out.println("GMT時刻=" + formatter.format(todayDate).toUpperCase()); // GMT時刻=2010/06/13 09:15:30 String convertDate =convertTime(todayDate); // OSのTimeZoneId=Asia/Tokyo にて変換 System.out.println("ローカル時刻=" + convertDate); // ローカル時刻=2010/06/13 09:15:30 何故??? } public static String convertTime(Date todayDate) { String timeZoneId = TimeZone.getDefault().getID(); System.out.println("OSのTimeZoneId=" + timeZoneId); // OSのTimeZoneId=Asia/Tokyo formatter.setTimeZone(TimeZone.getTimeZone(timeZoneId)); return formatter.format(todayDate).toUpperCase(); } }

    • ベストアンサー
    • Java

専門家に質問してみよう