从约会时间开始计时

时间:2014-06-10 07:52:54

标签: android

我有这样的日期时间格式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)

请帮助如何实现?

4 个答案:

答案 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)日期格式的字符串(来自服务器)。此字符串没有StringTokenizerhttp://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));