我有这样的日期时间格式2014-06-22T00:00:00
我使用此方法获取月,日和年
private String getMonthYear(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
dayOfTheWeek = (String) android.text.format.DateFormat.format("EEEE",
date);
month = (String) android.text.format.DateFormat.format("MMM", date);
day = (String) android.text.format.DateFormat.format("dd", date); // 20
year = (String) android.text.format.DateFormat.format("yyyy", date); // 20
Log.e("MONTH YEAR DATE", "" + dayOfTheWeek + " " + month + " " + day);
String textdate = month + "\n" + day + "\n" + dayOfTheWeek;
return textdate;
}
但我无法使用此方法或任何其他方法找到如何在上午获得时间? 当我使用StringTokenizer获取时间格式时
private String convertstringTodate(String date_String) {
String dtStart = date_String;
StringTokenizer tk = new StringTokenizer(dtStart);
String dateav = tk.nextToken();
String timeav = tk.nextToken();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-
dd'T'HH:mm:ss");
Date date = null;
try {
date = format.parse(dtStart);
dtStart = getMonthYear(date);
} catch (java.text.ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(date);
return dtStart;
}
我收到以下错误
06-10 03:36:09.587: E/AndroidRuntime(1924): java.util.NoSuchElementException
06-10 03:36:09.587: E/AndroidRuntime(1924): at
java.util.StringTokenizer.nextToken(StringTokenizer.java:208)
06-10 03:36:09.587: E/AndroidRuntime(1924): at com.mcm.menuandnotification.EventListAdaptor.convertstringTodate(EventListAdaptor.java:133)
请帮助如何实现?
答案 0 :(得分:4)
看到你的代码,我假设你真正想要的是像String这样的字符串:
2014-06-22T00:00:00
转换为
Jun
22
Sunday
00:00:00 AM
替换你的方法
private String convertstringTodate(String date_String) {
SimpleDateFormat inputFormat24 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
SimpleDateFormat outputFormatAmPm = new SimpleDateFormat("MMM'\n'dd'\n'EEEE'\n'KK:mm:ss a");
try {
Date date = inputFormat24.parse(date_String);
return outputFormatAmPm.format(date);
} catch (ParseException e) {
e.printStackTrace();
}
return "";
}
检查SimpleDateFormat documentation以查看所有这些MMM EEE yyy ddd等等...的意思。请注意,您可以使用ticks '
将文本,换行符等嵌入到(输出)格式中,例如"'month:'MMM'\nday:'dd"
答案 1 :(得分:0)
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MMM-yy hh.mm aa");
String formattedDate = dateFormat.format(new Date()).toString();
System.out.println(formattedDate);
输出 10-Jun-14 01.36 PM
这是 - not able to find how to get time in am pm using this method or any other method??
了解更多信息SimpleDateForamt
答案 2 :(得分:0)
检查StringTokenizer
的javadoc总是很好。
我可以看到你正在尝试分割字符串的时间和日期。我还看到你得到了ISO-8601(http://en.wikipedia.org/wiki/ISO_8601)日期格式的字符串(来自服务器)。此字符串没有StringTokenizer
(http://docs.oracle.com/javase/7/docs/api/java/util/StringTokenizer.html#StringTokenizer(java.lang.String))的默认分隔符的问题。
所以不要拆分字符串,而是首先解析日期,然后在上午/下午本地化视图后提取格式时间
答案 3 :(得分:0)
查看解决方案 -
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
String date1 = "2014-06-22T00:00:00";
try {
d1 = format.parse(date1);
} catch (java.text.ParseException e) {
e.printStackTrace();
}
Calendar now = Calendar.getInstance();
now.setTime(d1);
int a = now.get(Calendar.AM_PM);
if(a == Calendar.AM)
System.out.println("AM"+now.get(Calendar.HOUR));
else
System.out.println("PM"+now.get(Calendar.HOUR));