我的json响应为"publishedAt": "2017-09-12T01:03:08Z"
我想在Aug 12-09-2017 3:08
之类的简单日期格式化此回复,并将其设置为TextView
我正在使用这样的东西
Date dateObj = new Date(currentNews.getTimeInString());
TextView dateAndTimeView = (TextView) listItemView.findViewById(R.id.date_and_time);
String formattedDateAndTime = formatDateAndTime(dateObj);
dateView.setText(formattedDate);
private String formatDateAndTime(Date dateObj){
SimpleDateFormat dateFormat = new SimpleDateFormat("dd MMM, yyyy");
return dateFormat.format(dateObj);
}
答案 0 :(得分:1)
你试过SimpleDateFormat
吗?
https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
类似的东西(伪代码,不能在这里测试)
String givenDate = "2017-09-12T01:03:08Z";
SimpleDateFormat sdf= new SimpleDateFormat("MM-dd-yyyy HH:mm:ss");
try {
Date date = sdf.parse(givenDate );
System.out.println(date);
} catch (ParseException e) {
e.printStackTrace();
}
答案 1 :(得分:1)
请使用此方法:
public String getDateFromUTC(String ourDate)
{
try
{
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
Date value = formatter.parse(ourDate);
SimpleDateFormat dateFormatter = new SimpleDateFormat("dd-MM-yyyy hh:mm aa"); //this format changeable
dateFormatter.setTimeZone(TimeZone.getDefault());
ourDate = dateFormatter.format(value);
//Log.d("OurDate", OurDate);
}
catch (Exception e)
{
ourDate = "00-00-0000 00:00";
}
return ourDate;
}
答案 2 :(得分:1)
<强> TL; DR 强>
String formattedDateAndTime = Instant.parse("2017-09-12T01:03:08Z")
.atZone(ZoneId.of("America/Nome"))
.format(DateTimeFormatter.ofPattern("EEE dd-MM-uuuu H:mm", Locale.ENGLISH));
时区至关重要
代码代表它产生Mon 11-09-2017 17:03
。但是,请将正确的地区和城市替换为您想要的时区,这将反映在输出中。如果要使用JVM的时区设置,请使用ZoneId.systemDefault()
;但是,请注意,在JVM中运行的其他代码可能会在您的控件之外更改此设置,因此它并不完全可靠。
<强> ThreeTenABP 强>
我从我的评论中采取了自己的药物:扔掉Date
和SimpleDateFormat
。所以上面的代码需要 ThreeTenABP 。所有细节都在this question: How to use ThreeTenABP in Android Project。
ISO 8601
我进一步利用了JSON响应中的字符串是ISO 8601格式的事实,现代日期和时间类“理解”为默认值。如果它采用其他格式,则需要单独的DateTimeFormatter
来解析它;但不在这里(对于过时的课程,需要两个不同的SimpleDateFormat
。)
答案 3 :(得分:0)
试试这段代码。
Date Month PRICE product contract_month Contract_year
7-Jun-17 17-Sep -79 XYZ 9 2017
7-Jun-17 17-Oct -75 XYZ 10 2017
7-Jun-17 17-Jul -92 XYZ 7 2017
7-Jun-17 17-Aug -90 XYZ 8 2017
7-Jun-17 18-Sep -95 XYZ 9 2018
7-Jun-17 18-Oct -96 XYZ 10 2018
7-Jun-17 18-Nov -97 XYZ 11 2018