私はgroovy(正確にはグラフデータベースをトラバースするためのgremlin)を使用しています。残念ながら、私はgremlinを使用しているため、新しいクラスをインポートできません。
Unixタイムスタンプに変換したい日付値がいくつかあります。これらはUTCとして次の形式で保存されます:_2012-11-13 14:00:00:000
_
このスニペット(Groovy)を使用して解析しています:
_def newdate = new Date().parse("yyyy-M-d H:m:s:S", '2012-11-13 14:00:00:000')
_
問題は、タイムゾーン変換を実行することです。その結果、次のようになります。
_Tue Nov 13 14:00:00 EST 2012
_
そして、それをtime()
を使用してタイムスタンプに変換すると、UTCに変換され、タイムスタンプが生成されます。
日付が最初に解析されるときにタイムゾーン変換を行わないようにnew Date()
を取得するにはどうすればよいですか(日付をUTCと見なすだけです)。
Javaでそれを行う2つの方法があります:
/*
* Add the TimeZone info to the end of the date:
*/
String dateString = "2012-11-13 14:00:00:000";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-M-d H:m:s:S Z");
Date theDate = sdf.parse(dateString + " UTC");
/*
* Use SimpleDateFormat.setTimeZone()
*/
String dateString = "2012-11-13 14:00:00:000";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-M-d H:m:s:S");
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
Date theDate = sdf.parse(dateString);
Date.parse()は非推奨であることに注意してください(したがって、私はそれをお勧めしませんでした)。