我希望能够请求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 );
任何帮助都将不胜感激。
答案 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
但是,请注意时区。