【问题标题】:Android convert UTC /Date(1419969600000+0400)/ to local date [duplicate]Android将UTC /Date(1419969600000+0400)/转换为本地日期[重复]
【发布时间】:2015-05-18 09:04:22
【问题描述】:

我的 json 输出收到以下响应,在此我必须将 /Date(1419969600000+0400)/ 转换为 本地日期格式,我已经搜索过这个,没有匹配的,有人帮助,在此先感谢...

{
        "ErrorCode": 0,
        "ErrorMessage": "",
        "CustomerDueInvoices": [
            {
                "Customer_ID": "00000001",
                "Details": "Bill for The Month of December 2014",
                "DueAmount": 549.31,
                "DueDate": "/Date(1419969600000+0400)/",
                "InvoiceAmount": 549.31,
                "InvoiceDate": "/Date(1419969600000+0400)/",
                "InvoiceNo": "RTDBNWP/201527/14",
                "Property_Code": "WP-A-E003",
                "RevenuHead": "Late Payment Fee -gf"
            },
            {
                "Customer_ID": "00000001",
                "Details": "Bill for The Month of December 2014",
                "DueAmount": 132.03,
                "DueDate": "/Date(1419969600000+0400)/",
                "InvoiceAmount": 132.03,
                "InvoiceDate": "/Date(1419969600000+0400)/",
                "InvoiceNo": "RTDBNWP/201633/14",
                "Property_Code": "WP-A-E003",
                "RevenuHead": "Late Payment Fee"
            }
        ]
    }

【问题讨论】:

  • 字符串结果 = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(new Date(Long.parseLong(date)));
  • @HoangQBH,由于字符导致数字格式异常
  • @arun,使用子字符串删除 5 个字符“+0400”.. 希望对您有所帮助
  • 你很好,但是这里需要 +0400

标签: android


【解决方案1】:

这是我朋友的代码。即使在夏令时也能正常工作。

public  String getDateCurrentTimeZone(long timestamp) {
        try{
            Calendar calendar = Calendar.getInstance();
            TimeZone tz = TimeZone.getDefault();
            calendar.setTimeInMillis(timestamp * 1000);
            calendar.add(Calendar.MILLISECOND, tz.getOffset(calendar.getTimeInMillis()));
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date currenTimeZone = (Date) calendar.getTime();
            return sdf.format(currenTimeZone);
        }catch (Exception e) {
        }
        return "";
    }

【讨论】:

    【解决方案2】:

    我已经使用了这组代码。它现在可以工作了,谢谢大家的帮助。

    调用getDate(dateString);

    private String getDate(String date) {
        date = date.replace("/", "");
        date = date.replace("(", "");
        date = date.replace(")", "");
        date = date.replace("Date", "");
        date = date.replace("+", "~");
        String[] dateString = date.split("~"); //
        // getDates(Long.parseLong(dateString[0])+Long.parseLong(dateString[1]));
        return getDates(dateString);
    }
    
    private String getDates(String[] date) {
        try {
            Calendar calendar = Calendar.getInstance();
            TimeZone tz = TimeZone.getDefault();
            calendar.setTimeInMillis(Long.parseLong(date[0])
                    + (Long.parseLong(date[1]) / 1000));
            calendar.add(Calendar.MILLISECOND,
                    tz.getOffset(calendar.getTimeInMillis()));
            //SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Date currenTimeZone = (Date) calendar.getTime();
            return sdf.format(currenTimeZone);
        } catch (Exception e) {
            return "";
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-01
      • 2011-06-05
      • 2016-04-07
      • 1970-01-01
      相关资源
      最近更新 更多