日期从服务器以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)?
答案 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();
}