将Jsonserialized日期转换为android日期格式的问题

时间:2018-11-12 08:05:28

标签: java android json datetime

日期从服务器以jsonserialized格式发送,即 Date(1542002443000)。如何在Android中转换为 dd-mm-yyyy HH:mm:ss aa ? 我已经通过此代码转换了 2018-11-12T10:16:43 这类格式。

代码:

public static String DateAndTimeCustom(String input) {
    String date = input.substring(0, input.indexOf("T"));
    String time = input.substring(input.indexOf("T") + 1, input.length());
    SimpleDateFormat df = new SimpleDateFormat("dd-MM-yyyy", Locale.ENGLISH);
    Date formattedDate = null;
    try {
        DateFormat format = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
        formattedDate = format.parse(date);
    } catch (ParseException e) {
        e.printStackTrace();
    }

    return df.format(formattedDate) + " " + time;
}

如何转换此日期(1542002443000)?

3 个答案:

答案 0 :(得分:1)

正如我在评论中提到的那样,因为您收到的值是一个时间戳,您只需要使用以下Date构造函数即可。

  

日期(长日期)

     

分配一个Date对象,并将其初始化为表示自标准基准时间(即“纪元”)以来的指定毫秒数,即格林尼治标准时间1970年1月1日。

已编辑:由于您指定将其作为条目“ Date(1542002443000)”接收,因此您可以使用正则表达式清除所有非数字字符。

然后您的代码应为:

public static void main(String[] args) {
    String d = DateAndTimeCustom("Date(1542002443000)");
    System.out.println(d);
}

public static String CleanDate(String input) {
    //  remove all non numeric characters
    return input.replaceAll("[^\\d]", "");
}

public static String DateAndTimeCustom(String input) {
    // Build a date based on the cleaned time-stamp
    Date d = new Date(Long.parseLong(CleanDate(input)));
    SimpleDateFormat df = new SimpleDateFormat("dd-mm-yyyy HH:mm:ss aa", Locale.ENGLISH);
    String formattedDate  = df.format(d);

    return  formattedDate;

}

答案 1 :(得分:0)

您可以像下面这样使用它:-

String longDate = "1542002443000";
long mSecond = Long.parseLong(longDate);
String dString = new SimpleDateFormat("dd-mm-yyyy").format(new Date(mSecond));

如果要获取字符串格式的数据,则必须像上面那样进行类型转换。

答案 2 :(得分:0)

看起来imestamp以毫秒为单位保存,请尝试->

DateFormat formatter = new SimpleDateFormat("MMMM dd, yyyy hh:mm a");
     long dateStart = input;
                try {
                    Calendar calendar = Calendar.getInstance();
                    calendar.setTimeInMillis(due);
                    ((TextView) view.findViewById(R.id.text)).setText(formatter.format(calendar.getTime()));

            } catch (Exception e) {
                e.printStackTrace();
            }