日历给我错误的时间和分钟

时间:2011-09-21 04:12:57

标签: android calendar

我正在尝试获取时间戳的时间,但是当我使用Calendar.HOURCalendar.MINUTE时,我一直在错误的时间,无论时间戳是什么,它告诉我小时为10,分钟是12。

现在当我使用Calendar.getTime()时,它给了我正确的时间,所以我不明白?我只想以12小时格式和分钟获得小时

这是我如何去做的

public static String getRealTime(long time){

            Calendar cal = Calendar.getInstance();
    Log.d("Calendar",String.valueOf(time));
    cal.setTimeInMillis(time);
    Date timeS = cal.getTime();
    String sTime = timeS.toString(); // gives correct time in 24hr format
    int hr = cal.HOUR;               // gives me 10 no matter what the timestamp is
    int min = cal.MINUTE;            // gives me 12 no matter what the timestamp is
    String dMin = getDoubleDigit(min);
    int ampm = cal.AM_PM;
    String m = new String();
    if(ampm == 0){
        m = "AM";
    }else{
        m="PM";
    }
    String rtime = String.valueOf(hr)+":"+dMin+" "+m;
    return rtime;
} 

所以说时间戳是1316626200000 cal.getTime()给我Wed Sep 21 13:30:00 EDT 2011这是正确的时间,但是cal.HOUR给了我10小时,显然是不应该是什么。为什么这样做?

2 个答案:

答案 0 :(得分:13)

cal.HOURcal.MINUTE是用于Calendar方法调用的静态最终整数。您可以使用此代码来获得正确的结果:

   int hr = cal.get(Calendar.HOUR);
   int min = cal.get(Calendar.MINUTE);

请注意,我调用了来自HOUR的{​​{1}}和MINUTE字段,而不是您的对象Calendar。从实例化对象调用静态成员是不好的做法。

答案 1 :(得分:2)

拯救的伟大而全能的Android参考页面! :D http://developer.android.com/reference/java/util/Calendar.html

所以,这里有一些关于为什么其中一些东西没有返回你期望的结果的内容。首先,Calendar.HOUR不是对当前小时的引用。首先提示的是,它是全部大写的,按Java惯例,这意味着这是一个常量(又名final)字段。如果您在Eclipse中进行开发,它可能会发出警告,说您应该引用类名为Calendar的静态变量,而不是使用实例cal。第二个提示:参考页面是这样说的! ;)

那么,你应该怎么做Calendar.HOUR呢?这是一个静态常量,因此您可以使用cal.get()来查找。 (参见参考页面http://developer.android.com/reference/java/util/Calendar.html#get(int)

但是!有一种更简单的方法。您可能正在寻找的代码可能是这样的:

public static String getRealTime(long time){
    return new SimpleDateFormat("HH:mm").format(new Date(time));
    //if you'd rather have the current time, just use new Date() without the time as a parameter
} 

另一位用户要求提供类似的东西,此页面上还有其他一些实现Display the current time and date in an Android application