2011-12-05 7 views
1

ユーザが設定した特定の日付にアラームを開始したい。問題は、アラームを開始する時間が非常に混乱するということです。カレンダーオブジェクトでアラームを設定する

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の値は常により30億であると私はありません持っている:ここで時間等が設定されている方法は、文字列taskDate5-12-2011のようなもので、ユーザーが選びだした日ですよアイデア理由。

答えて

1

それはつまり、「 エポック」として知られている標準基準時刻からのミリ秒の

数、すなわち1970年1月1日00:00:00 GMTで、日付の内部表現です。

変数「alarmTimeが」文字列「taskDate」が、方法 - 「に設定」に渡されるようにアラームが何百年もの間に開始されることを意味し、それにもかかわらず、日Javadoc

+0

で述べたようしかし、 - ユーザーが選択した日付を保持 - メソッドに渡されるのは "5-12-2011"のようになります。 私はこの権利をどのように処理するのか分かりません。 – vein

+0

これは正しい方法です。これは、すべてのJavaプラットフォームでの標準日付の実装です。 – Ramseys

関連する問題