1. 经纬度

经伟度的度分秒的换算关系如下:   

①换算关系 :

1度=60分;

1分=60秒; 

②换算举例 :

一般情况下,换算原理是这样的:

把度的数值中的小数点的转换成为分,取分之整数,再把分的小数转换成为秒。   

举例说明:例如:31.87654度   

把数值度的小数点以后的数字乘以60分/度 :0.87654*60=52.5924分   

把数值分的小数点以后的数字乘以60秒/分 :0.5924*60=35.554秒   

合计:31度52分35.554秒

1.1.将格式为dddmm.mmmm—>ddd.dddddd(度分转度)
/** * 经纬度度分转度 * @param value * @return */ public static double
parseLatLon(String value){ int d=(int)Double.parseDouble(value)/100; double
m=Double.parseDouble(value)%100; return d+(m/60); }
1.2.将部标(JT/T 808)经纬度格式转成ddd.dddddd

纬度值乘10 的6 次方,精确到百万分之一度,单位:度
public static final BigDecimal COORDINATE_PRECISION = new
BigDecimal("0.000001"); /** * BigDecimal乘法 * @param longNum * @return */ public
static double multiply(long longNum) { return new
BigDecimal(String.valueOf(longNum)).multiply(COORDINATE_PRECISION).doubleValue();
}
2. 时间操作

2.1.将固定格式的时间转成UTC时间
/** * 将特定格式的时间字符串转成UTC时间 * @param bcdTimeStr 时间字符串 * @param dateTimeFormatter
字符串格式,比如:"ddMMyyHHmmss" * @return */ public static ZonedDateTime
parseBcdTime(String bcdTimeStr,String dateTimeFormatter) { DateTimeFormatter
formatter = DateTimeFormatter.ofPattern(dateTimeFormatter); LocalDateTime
localDateTime = LocalDateTime.parse(bcdTimeStr, formatter); ZonedDateTime
zonedDateTime = ZonedDateTime.of(localDateTime, ZoneOffset.UTC); return
zonedDateTime; }
2.2.获取本地UTC时间
//当前时间 ZonedDateTime currentDateTime = ZonedDateTime.now(ZoneOffset.UTC);
2.3. 获取当天的开始与结束时间
/** * 获取当天的开始时间 * @return */ public static Date getDayBegin() { Calendar cal
= new GregorianCalendar(); cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0); cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0); return cal.getTime(); } /** * 获取当天的结束时间 *
@return */ public static Date getDayEnd() { Calendar cal = new
GregorianCalendar(); cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59); cal.set(Calendar.SECOND, 59); return
cal.getTime(); }
2.4.获取两个时间段内所有的日期
/** * 获取两个时间段内所有的日期String * @param startTime * @param endTime * @return */
public static List<String> getBetweenDays(String startTime, String endTime) {
// 返回的日期集合 List<String> days = new ArrayList<String>(); DateFormat dateFormat =
new SimpleDateFormat("yyyy-MM-dd"); try { Date start =
dateFormat.parse(startTime); Date end = dateFormat.parse(endTime); Calendar
tempStart = Calendar.getInstance(); tempStart.setTime(start); Calendar tempEnd
= Calendar.getInstance(); tempEnd.setTime(end); //日期加1(包含结束)
tempEnd.add(Calendar.DATE, +1); while (tempStart.before(tempEnd)) {
days.add(dateFormat.format(tempStart.getTime()));
tempStart.add(Calendar.DAY_OF_YEAR, 1); } } catch (ParseException e) {
e.printStackTrace(); } return days; }
2.5.获取时间对于的时间戳
/** * 获取毫秒级时间戳 * @param date * @return */ public static Long
getEpochMilli(Date date){ return date.toInstant().toEpochMilli(); } /** *
获取秒级时间戳 * @param date * @return */ public static Long getEpochSecond(Date
date){ return date.toInstant().getEpochSecond(); }
3.内容转换

3.1. 读ByteBuf固定长度并转成GBK字符串
/** * 默认编码 */ public static final Charset DEFAULT_CHARSET =
Charset.forName("GBK"); /** * ByteBuf读取GBK字符串 * * @param buf * @param len 读取长度
* @return GBK字符串 */ public static String readGbkString(ByteBuf buf, int len) {
return buf.readCharSequence(len, DEFAULT_CHARSET).toString().trim(); }

技术
今日推荐
下载桌面版
GitHub
百度网盘(提取码:draw)
Gitee
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:766591547
关注微信