下記の問題に取り組んでいるのですが、期待値通りの出力結果にしたいのですが中々合わせることができません
*問題文
「2016年1月1日 0時0分0秒00ミリ秒JST」の情報を持つDateクラスインスタンスを生成してください。その後、「1970 年 1月 1日 0時0分0秒00ミリ秒 GMT」 からの経過時間をミリ秒数で表示してください。
※ミリ秒を指定する処理が必要です。
※タイムゾーンをJSTに指定する必要があります。
期待値 1451574000000
出力結果 1451606400000
import java.util.TimeZone; import java.util.Date; import java.util.Calendar; import java.text.SimpleDateFormat; import java.text.ParseException; public class Main { public static void main(String[] args)throws Exception{ TimeZone tzn = TimeZone.getTimeZone("JST"); //TimeZone変数「tzn」をうまく活用しましょう! //「2016年1月1日 0時0分0秒00ミリ秒JST」の情報を持つDateクラスインスタンスを生成 SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); Date day = sdf.parse("2016/1/1 0:0:0"); //ミリ秒を指定する処理 Calendar cl = Calendar.getInstance(); cl.set(2016,0,1,0,0,0); cl.clear(); //タイムゾーンをJSTに指定する cl.setTimeZone(tzn); //タイムスタンプ表示 System.out.print(day.getTime()); } }
ミリ秒をうまく指定できていないと考えているのですがいかがでしょうか?
> 「1970 年 1月 1日 0時0分0秒00ミリ秒GMT」からの経過時間
が、ご提示のソースコードにないようですが、書き漏れですか?
出力結果が経過時間だと認識していたのですが違うのですか?
出力結果は「day」をミリ秒にした値です。
#途中で送っちゃった。。。
”「2016年1月1日 0時0分0秒00ミリ秒JST」と「1970 年 1月 1日 0時0分0秒00ミリ秒GMT」の経過時間を取得する”と手順が必要です。
取得するというのは、タイムスタンプを表示するということで合ってますでしょうか?
実行しているのは日本にあるマシンですか?
「取得する」と「表示する」の意味は違います。
#辞書を引きましょう
・”経過時間”って何…?
・DateクラスはTimeZoneの考慮がないので、「日本にあるマシン」なら…?
>t.ikko様
そもそもDate.getDate()は1970/1/1 0:00:00からの「経過時間」をlong値で取得するメソッドですが
拘るところがおかしくないでしょうか。
回答2件
あなたの回答
tips
プレビュー