获取当前日期的日期对象,但是我控制的时间可以转换为unix时间

时间:2017-05-30 08:36:58

标签: java date unix

我希望能够请求java获取当前日期,然后我想控制添加到该日期对象的时间,然后将该日期对象转换为unix时间。

即。

之类的东西
Calendar today = Calendar.getInstance();
today.set(Calendar.HOUR_OF_DAY, 0);
today.set(Calendar.MINUTE, 0);
today.set(Calendar.SECOND, 0);
today.set(Calendar.MILLISECOND, 0);

然后使用Calendar对象作为转换后的字符串

来执行此操作
String dateString = "Fri, 09 Nov 2012 23:40:18 GMT"; //but this 
DateFormat dateFormat = new SimpleDateFormat("EEE, dd MMM yyyy 
hh:mm:ssz");
Date date = dateFormat.parse(dateString );
long unixTime = (long) date.getTime()/1000;
System.out.println(unixTime );

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

首先,您的日期格式存在一些问题:在解析24小时时,您必须使用大写H几个小时,而且我认为时区前面缺少空格{{ 1}}。

使用较新的Java时间API,您可以尝试:

z

新的API在涉及时区时非常严格,您可能需要注意这一点。在此实现中,解析时间定义时区(在此示例中为GMT)。但也许你想要你的本地时区(由虚拟机定义)?在这种情况下,您可以将其转为:ZonedDateTime.parse("Fri, 09 Nov 2012 23:40:18 GMT", DateTimeFormatter.ofPattern("EEE, dd MMM yyyy HH:mm:ss z")) .with(LocalDate.now()) .toEpochSecond();

在原始方法中,为什么不继续使用ZonedDateTime.now().with(ZonedDateTime.parse(...).toLocalTime())

Calendar

但是,请注意时区。