2011-12-05 96 views
1

我想在用戶設置的特定日期開始鬧鐘。問題在於報警開始的時間需要一個非常混亂的值。下面是其中的時間設置等字符串taskDate的方法,這是由用戶選擇的日期類似5-12-2011按日曆對象設置鬧鐘

private void startAlarm(String taskDate) 
{ 
    AlarmManager alarmManager = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE); 

    Calendar calendar = Calendar.getInstance(); 
    calendar.setTimeInMillis(System.currentTimeMillis()); 

    String [] taskDateArray = taskDate.split("-"); 
    int day = Integer.parseInt(taskDateArray[0].trim()); 
    int month = Integer.parseInt(taskDateArray[1].trim()); 
    int year = Integer.parseInt(taskDateArray[2].trim()); 
    Log.w(TAG, "Year " + year + " Month " + month + " Day " + day); 

    calendar.set(Calendar.YEAR, year); 
    calendar.set(Calendar.MONTH, month - 1); // Month is zero-based 
    calendar.set(Calendar.DAY_OF_MONTH, day); 

    long alarmTime = calendar.getTimeInMillis(); 

    Intent intent = new Intent(this, RememberMeService.class); 
    PendingIntent pendingIntent = PendingIntent.getService(this, 0, intent, 0); 
    alarmManager.set(AlarmManager.RTC, alarmTime, pendingIntent); 
} 

alarmTime值總是超過三十億,我沒有想法爲什麼。

回答

1

它是一個日期的內部表示,即由於被稱爲「 時代」,即1970年1月1日,00:00:00 GMT標準的基本時間

毫秒數。

如日期Javadoc

+0

但無論如何說,這意味着,作爲變量「alarmTime」傳遞到「設置」 - 方法報警將開始在幾百年,雖然字符串「taskDate」 - 保存用戶選擇的日期 - 傳遞給方法的日期就像「5-12-2011」。 我不明白如何處理這個權利。 – vein

+0

你這樣做的方式是正確的 - 這是所有java平臺上的標準日期實現。 – Ramseys