java - 如何在java中解析UTC时间戳并转换为另一种格式

标签 java datetime timestamp utc

嗨,我有 UTC 时间戳,我需要解析将其转换为 IST 格式 我用字符串: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

我该如何解决这个问题。任何帮助将不胜感激。

最佳答案

为什么不在解析之前简单地替换字符?

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

我假设输入可以包含 2B2b 用于 +2A 2a 表示 -

如果您想使用简单日期格式,可以应用相同的逻辑。

关于java - 如何在java中解析UTC时间戳并转换为另一种格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36261113/

相关文章:

c# - 以微秒为单位的日期时间

mysql - mysql中的日期时间字段溢出错误

java - 如何使用java从oracle数据库获取以毫秒为单位的日期/时间?

java - TFS 无法从 Ant/JUnit 构建中找到单元测试结果

java - 为什么我的 JDK11 程序会受到 Windows 7 个性化显示设置的影响?

python - pandas to sql 将 datetime64 索引转换为时区感知

php - 在创建新行条目时从 mysql 行中检索时间戳

java - 最佳实践 : get deep value of an object

java - 尝试以编程方式通过 jmx 访问 kafka 指标时出错

php - PHP 和 MySQL 中的当前时间戳