我正在开发一个读取gps数据的程序。 NMEA字符串返回如下所示的时间:34658.00。
我的解析器将其视为双重
InputLine = "\\$GPGGA,34658.00,5106.9792434234,N,11402.3003,W,2,09,1.0,1048.47,M,-16.27,M,08,AAAA*60";
//NMEA string
//inputLine=input.readLine();
if(inputLine.contains("$GPGGA")) {
String gpsgga = inputLine.replace("\\", "");
String[] gga = gpsgga.split(",");
String utc_time = gga[1];
if (!gga[1].isEmpty()) {
Double satTime = Double.parseDouble(utc_time);
gpsData.setgpsTime(satTime);
}
我如何将格式化34658.00作为03:46:58?
答案 0 :(得分:1)
DateTimeFormatter nmeaTimeFormatter = DateTimeFormatter.ofPattern("Hmmss.SS");
String utcTime = "34658.00";
System.out.println(LocalTime.parse(utcTime, nmeaTimeFormatter));
打印
3点46分58秒
首先解析为double
绕道而行,它只是给你更复杂的代码,所以避免这样做。只需解析时间,就像解析任何其他格式的时间一样。以上是否也适用于上午10点以后的小时数为两位数的情况?确实如此。输入:
String utcTime = "123519.00";
输出:
12点35分19秒
它确实需要两个小数(但如果它们非零,则会将它们渲染回来)。如果小数位数可能不同,则至少有两个选项
DateTimeFormatterBuilder
指定小数部分(甚至是可选的小数部分),其中包含0到9位小数之间的任何内容。String.replaceFirst
删除小数部分,然后将其从格式模式字符串中删除。它还需要小数点前至少5位数,因此一天中第一个小时的时间需要有前导零,例如00:01:45为00145.00
。
由于时间始终为UTC,因此您可能希望使用atOffset
将LocalTime
转换为OffsetTime
ZoneOffset.UTC
。如果您也知道日期,则OffsetDateTime
或Instant
是合适的,但我没有深入研究文档以确定您是否知道日期。
java.time
。答案 1 :(得分:0)
NSWorkspaceDidActivateApplicationNotification
然后零填充并在其间添加':#。如果你愿意的话,你也可以截断或舍入到整秒,但是要注意秒数最多可以达到60,在这种情况下你必须将秒数归零,在分钟数上加1,然后如果得到则可以完成60分钟,小时数。