8

I need to get the field AM/PM in date object. How can i get it?

This is my code.

String startTime ="01:05 PM";
 SimpleDateFormat sdf = new SimpleDateFormat("hh:mm aa");

 Date st = sdf.parse(startTime);
Srinivasan
  • 11,718
  • 30
  • 64
  • 92

5 Answers5

35

You could use a Calendar.

Calendar cal = Calendar.getInstance();
cal.setTime(st);
if (cal.get(Calendar.AM_PM) == Calendar.PM) {
  ...
}

Make sure you don't have a time zone mismatch when you do this.

cletus
  • 616,129
  • 168
  • 910
  • 942
8

Calendar is probably best, but you could use DateFormat, too:

String amPm = new SimpleDateFormat("aa").format(time);

The TimeZone caveat also applies here.

Thilo
  • 257,207
  • 101
  • 511
  • 656
2

Please try this

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd_HH_mm_ss_aa");
    Calendar cal = Calendar.getInstance();
    Log.d("Time", ""+dateFormat.format(cal.getTime()));
    int day = Calendar.getInstance().get(Calendar.DAY_OF_WEEK);
    System.out.println("time => " + namesOfDays[day-1]+"_"+dateFormat.format(cal.getTime()));
Nitin Karale
  • 789
  • 3
  • 12
  • 34
2

use this..

String getTime(String milliseconds) {

    String time = "";
    Calendar cal = Calendar.getInstance();
    cal.setTimeInMillis(Long.parseLong(milliseconds));

    time = cal.get(Calendar.HOUR) + " : " + cal.get(Calendar.MINUTE);

    if(cal.get(Calendar.AM_PM)==0)
        time=time+" AM";
    else
        time=time+" PM";

    return time;

}
Kishan Vaghela
  • 7,678
  • 5
  • 42
  • 67
2

Calendar can also do

Calendar cal = Calendar.getInstance();
cal.setTime(st);
String meridiem = cal.getDisplayName(Calendar.AM_PM, Calendar.SHORT, Locale.getDefault())

meridiem now equals "PM" based on your code.

Nathan Reline
  • 1,137
  • 10
  • 13