嗨,我有utc时间戳,我需要解析转换成ist格式,我用它从msc(电信基站)接收utc时间戳的形式 string : 1307261822062B0530
它可以分为
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
我怎样才能解决这个问题。任何帮助都将不胜感激。
1条答案
按热度按时间g0czyy6m1#
为什么不在解析之前简单地替换字符呢?
我假设输入可以包含
2B
或者2b
为了+
以及2A
或者2a
为了-
.如果要使用SimpleDataFormat,可以应用相同的逻辑。