時間を指定(7時、12時、21時)してNotificationを発行しようと以下のコードを書きました。しかし、コードのsetNotificationAlarmが呼ばれる瞬間にNotificationがでてきてしまい困っております。どこを直せば良いかわかりますか?

補足:
メソッドがOverrideされているのは別に用意されたFragmentでNotificationの設定を変更した時にそのFragmentから呼び出すためです。cancelAlarmメソッドはそのFragmentで設定を変更した時に以前にセットされたAlarmを解除するためのものです。あとこのメソッドはアプリ初回起動時にも呼ばれます。

/**
     * Setting alarm for notification.
     */
    @Override
    public void setNotificationAlarm(){
        if (mPref.getBoolean(PreferenceValue.NOTIFY_MORNING, true)){
            Calendar calendar = Calendar.getInstance();
            calendar.set(Calendar.HOUR_OF_DAY, 7);
            calendar.set(Calendar.MINUTE, 0);
            calendar.set(Calendar.SECOND, 0);
            Long startTime = calendar.getTimeInMillis();
            cancelAlarm(MORNING_INTENT);
            setAlarm(startTime, MORNING_INTENT);
        }
        if(mPref.getBoolean(PreferenceValue.NOTIFY_NOON, true)){
            Calendar calendar = Calendar.getInstance();
            calendar.set(Calendar.HOUR_OF_DAY, 12);
            calendar.set(Calendar.MINUTE, 0);
            calendar.set(Calendar.SECOND, 0);
            Long startTime = calendar.getTimeInMillis();
            cancelAlarm(NOON_INTENT);
            setAlarm(startTime, NOON_INTENT);
        }
        if(mPref.getBoolean(PreferenceValue.NOTIFY_NIGHT, true)){
            Calendar calendar = Calendar.getInstance();
            calendar.set(Calendar.HOUR_OF_DAY, 21);
            calendar.set(Calendar.MINUTE, 0);
            calendar.set(Calendar.SECOND, 0);
            Long startTime = calendar.getTimeInMillis();
            cancelAlarm(NIGHT_INTENT);
            setAlarm(startTime, NIGHT_INTENT);
        }
    }

    private void setAlarm(Long startTime, String intentKind){
        Intent intent = new Intent(MainActivity.this, NotificationService.class);
        intent.setType(intentKind);
        PendingIntent alarmIntent = PendingIntent.getService(MainActivity.this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
        AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
        alarmManager.set(AlarmManager.RTC_WAKEUP, startTime, alarmIntent);
    }

    private void cancelAlarm(String intentKind){
        Intent intent = new Intent(MainActivity.this, NotificationService.class);
        intent.setType(intentKind);
        PendingIntent alarmIntent = PendingIntent.getService(MainActivity.this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
        AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
        alarmManager.cancel(alarmIntent);
    }