0

XML ファイルのデータを表示する Google マップ アプリケーションがあります。何かの上にマウスを置くと、データを含むいくつかの情報が返されます。XMLファイルからの日付はこのようなものです...

  <cap:expires>2013-05-02T00:00:00-05:00</cap:expires>

私はそれを変換するこのビットのコードを持っています....

function dateFromString(s) {

  var bits = s.split(/[-T:+]/g);
  var d = new Date(bits[0], bits[1]-1, bits[2]);
  d.setHours(bits[3], bits[4], bits[5]);

  // Get supplied time zone offset in minutes
  var offsetMinutes = bits[6] * 60 + Number(bits[7]);
  var sign = /\d\d-\d\d:\d\d$/.test(s)? '-' : '+';

  // Apply the sign
  offsetMinutes = 0 + (sign == '-'? -1 * offsetMinutes : offsetMinutes);

  // Apply offset and local timezone
  d.setMinutes(d.getMinutes() - offsetMinutes - d.getTimezoneOffset())

  // d is now a local time equivalent to the supplied time
return (d);

} 

var days = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];
var months =['January','February','March','April','May','June','July','August','September','October','November','December'];
var ampm = " am";

var dt = (dateFromString("yyyy-MM-dd'T'HH:mm:ssZ"));
var yr = dt.getFullYear();
var mth = dt.getMonth();  // months in Javascript are 0-11 so May is month 4
mth = months[mth];
var dte = dt.getDate();
var dy = dt.getDay();  // days are 0-6
dy = days[dy];
var hrs = dt.getHours();
var h1 = hrs;
var mins = dt.getMinutes();

if (hrs >= 12) {ampm = " pm"}
if (hrs >= 13) {hrs = hrs - 12}
if (h1 == 0) {hrs = 12}

if (hrs <10) {hrs = "0" + hrs};  // if  leading zero desired
if (mins <10) {mins = "0" + mins};

var dtstring = dy + " " + mth + " " + dte + " " + yr + " " + hrs + ":" + mins + ampm;

これをハードコーディングするとうまく機能し、変換されます。

var dt = (dateFromString( '2013-05-02T11:08:00-6:00'));

私の問題は、XML から要素を挿入して、何を変換するかを知る方法と場所です。出力するように設定しましたが、変換するために入力をどこに置くべきかわかりません。すべての設定方法を確認するために完全なコードを表示する必要がある場合に備えて、マップと xml ファイルの両方へのリンクを含めました。

デモマップ

デモ XML

4

1 に答える 1

0

XML dateTime javax.xml.datatype.XMLGregorianCalendar を処理する Java の特別なクラスがあります。

XMLGregorianCalendar xgc = DatatypeFactory.newInstance().newXMLGregorianCalendar("2013-05-02T00:00:00-05:00");

次に、そのメソッドを使用して必要なフィールドを取得します。GregorianCalendar と Date に変換することもできます

于 2013-05-03T05:08:18.063 に答える