您好我有UTC时间戳,我需要解析才能将其转换为IST格式
我用来以string : 1307261822062B0530
的形式从MSC(电信基站)接收UTC时间戳,它可以如下划分
13 07 26 18 22 06 2B 05 30
yy = 13
MM = 07
DD = 26
hh = 18
mm = 22
ss = 06
S = 2B (how do iconvert this value into + / -)
hh = 05
mm = 30
问题是将符号(+/-)转换为在接收的通用时间上加或减
我试图解析为吼叫
public static String formatRawTimeStamp(String rawTimeStamp){
String[] arr_msisdn = rawTimeStamp.split("(?<=\\G.{2})"); // split every two character
String formatedDate = "";
Date date;
DateFormat srcFormat = new SimpleDateFormat("yy-MM-dd HH:mm:ss.ssZ");
DateFormat desFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
if(arr_msisdn.length >= 6){
try {
date = (Date)srcFormat.parse(arr_msisdn[0]+"-"+arr_msisdn[1]+"-"+arr_msisdn[2]+" "+arr_msisdn[3]+":"+arr_msisdn[4]+":"+arr_msisdn[5]+"."+arr_msisdn[6]+""+arr_msisdn[7]+""+arr_msisdn[8]);
formatedDate = desFormat.format(date);
} catch (ParseException e) {
e.printStackTrace();
}
}
return formatedDate;
}
但我得到了例外
java.text.ParseException: Unparseable date: "13-07-30 18:45:11.2b0530"
at java.text.DateFormat.parse(DateFormat.java:354)
at org.bouncycastle.asn1.util.ASNUtil.formatRawTimeStamp(ASNUtil.java:199)
at org.bouncycastle.asn1.util.MOCallEvent.decode(MOCallEvent.java:187)
at org.bouncycastle.asn1.util.ZTEASN1DecodeApp.decode(ZTEASN1DecodeApp.java:114)
at org.bouncycastle.asn1.util.ZTEASN1DecodeApp.main(ZTEASN1DecodeApp.java:80)
听到它无法解析"2b"
值,表示符号(+/-)
S = Sign 0 = “+”, “-“ ASCII encoded
我该如何解决这个问题。任何帮助将不胜感激。
答案 0 :(得分:2)
为什么不在解析之前简单地替换字符?
String input = "1307261822062B0530";
String adjusted = input.replaceAll("2[Bb]", "+").replaceAll("2[Aa]", "-");
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyMMddHHmmssZ");
OffsetDateTime odt = OffsetDateTime.parse(adjusted, fmt); //2013-07-26T18:22:06+05:30
我假设输入可以包含2B
的{{1}}或2b
以及+
的{{1}}或2A
。
如果要使用simpledateformat,可以应用相同的逻辑。