0

http://earthquake.usgs.gov/earthquakes/feed/geojson/all/hourから日付/時刻形式のデータを取得しました

ここにデータの引用があります:

"properties":{
    "mag":0.5,
    "place":"123km NNW of Talkeetna, Alaska",
    "time":1343795877,
    "tz":-480,
    "url":"/earthquakes/eventpage/ak10523664",
    "felt":null,
    "cdi":null,
    "mmi":null,
    "alert":null,
    "status":"AUTOMATIC",
    "tsunami":null,
    "sig":"4",
    "net":"ak",
    "code":"10523664",
    "ids":",ak10523664,",
    "sources":",ak,",
    "types":",general-link,general-link,geoserve,nearby-cities,origin,"
},

しかし、私が使用するとき:

Date date1 = new Date();
date1.setTime("1343795877"); 

結果は: Fri Jan 16 13:16:35 GMT+00:00 1970 ですが、正しい日付は 2012 年 8 月 1 日水曜日 04:37:57 UTC (同じ Web サイトの CSV バージョンから)

正確な時刻を取得するにはどうすればよいですか??

4

3 に答える 3

2

数字「1343795877」はUNIX 時間で、1970 年から経過した秒数です。

秒単位の時間であり、Date コンストラクターにはミリ秒かかるため、1000 を掛ける必要があります。したがって、これは魔法を行います:

Date d = new Date(1343795877*1000);

オンラインの UNIX to Date コンバーターを使用して確認できます。

UNIX 時間は UTC であり、ユーザーのタイムゾーンを模倣していないことに注意してください。そのため、タイムゾーンを適用する必要があります。

非常に便利なJodaTimeを使用することをお勧めします。

変換の例を次に示します。

DateTime dt = new DateTime(1343795877*1000);
dt.withZone(DateTimeZone.forID("UTC"));

編集:

DateTimeFormatter formatter = 
    DateTimeFormat.forPattern("dd-MM-yyyy HH:mm:ss, SSS [z]");
formatter.print(dt);
于 2012-08-01T05:48:46.633 に答える
1

ここでその単純なものを見てください:

new Date(epochTime * epochFormat) // '1343795877' this time format is known as epoch time

epochTimeロングタイプの時間です。1343795877L
epochFormatは、秒単位の場合は1000 、ミリ秒単位の場合は1です。epochTime

あなたの場合、数秒で1000を掛けます

私はあなたがあなたの日付SimpleDateFormatterフォーマットするためにも使うべきだと思います:

SimpleDateFormat dateFormat = new SimpleDateFormat("EEE dd-MMM-yy", Locale.ENGLISH); // date format and locale you want to use
dateFormat.setTimeZone("Asia/Kolkata"); // can have your time zone
String date = dateFormat.format(new Date(epochTime * epochFormat));

日付形式については、こちらをご覧ください

于 2012-08-01T06:13:16.050 に答える
1

まず、構文が間違っています。Date のようなメソッドはありませんdate.setTime(String)。それdate.setTime(Long)はかかりますmilliseconds as argument。そして、あなたが得ているのはseconds、正しい日付を得るために1000を掛けるだけです。だからあなたの解決策はdate1.setTime(1343795877000L);

于 2012-08-01T05:47:30.257 に答える