解析日期而不进行时区转换

F21*_*F21 12 java groovy datetime gremlin

我正在使用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')
Run Code Online (Sandbox Code Playgroud)

问题是它进行了时区转换,结果是:

Tue Nov 13 14:00:00 EST 2012
Run Code Online (Sandbox Code Playgroud)

如果我然后将其转换为使用时间戳time(),转换为UTC,则生成时间戳.

如何new Date()在首次解析日期时进行任何时区转换(并假设日期为UTC)?

jah*_*roy 16

以下是在Java中执行此操作的两种方法:

/*
 *  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");
Run Code Online (Sandbox Code Playgroud)
/*
 *  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);
Run Code Online (Sandbox Code Playgroud)

请注意,不推荐使用Date.parse()(因此我不推荐使用它).