Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java日历在第二天前一小时获取_Java_Android_Time_Calendar_Milliseconds - Fatal编程技术网

java日历在第二天前一小时获取

java日历在第二天前一小时获取,java,android,time,calendar,milliseconds,Java,Android,Time,Calendar,Milliseconds,我有一个日期:21/08/2013 17:05:06 我想知道2013年8月22日00:00:00之前的毫秒数 可以用Calendar对象实现吗? 谢谢 编辑: 我的解决方案是: Calendar cal2 = Calendar.getInstance(TimeZone.getDefault()); cal2.setTimeInMillis(prevCalBatt.getTimeInMillis()); cal2.add(Calen

我有一个日期:21/08/2013 17:05:06 我想知道2013年8月22日00:00:00之前的毫秒数

可以用Calendar对象实现吗? 谢谢

编辑:

我的解决方案是:

Calendar cal2 = Calendar.getInstance(TimeZone.getDefault());
                cal2.setTimeInMillis(prevCalBatt.getTimeInMillis());
                cal2.add(Calendar.DAY_OF_MONTH,1); //add a day
                cal2.set(Calendar.HOUR_OF_DAY, 0); //set time to midnight
                cal2.set(Calendar.MINUTE, 0);
                cal2.set(Calendar.SECOND, 0);
                cal2.set(Calendar.MILLISECOND, 0);

                timeBetweenBoth+=(cal2.getTimeInMillis()-prevCalBatt.getTimeInMillis());

为每个日期创建一个日历对象,然后减去它们的
getTimeInMillis()

可以使用以下方法设置报警:

/**
     * Set the Alarm
     *
     * @param context  the activity context
     * @param id       the alarm ID for this app
     * @param hour     the alarm hour
     * @param minute   the alarm minute
     * @param timeZone the timezone "am" = Calendar.AM or "pm" = Calendar.PM
     */
    public static void setAlarm(Context context, int id, int hour, int minute, String timeZone) {
        AlarmManager alarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
        AlarmStateCache cache = AlarmStateCache.getInstance(context);
        cache.saveState(State.ON);

        Calendar now = Calendar.getInstance();

        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(System.currentTimeMillis());
        calendar.set(Calendar.HOUR_OF_DAY, to24Hour(hour, timeZone));
        calendar.set(Calendar.MINUTE, minute);
        calendar.set(Calendar.SECOND, 0);

        if(calendar.before(now))
            calendar.add(Calendar.DAY_OF_MONTH,1);

        Intent intent = new Intent(context, YourReceiver.class);
        PendingIntent pIntent = PendingIntent.getBroadcast(context, id, intent, 0);
        alarm.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 1000 * 20, pIntent);
    }
和助手方法

   public static int to24Hour(int hour, String zone) {
        if (1 > hour && hour < 12)
            throw new IllegalArgumentException("Hour must only be 1 - 12!");

        return zone.equals("am") ? hour : hour + 12;
    }
公共静态整数到24小时(整数小时,字符串区域){
如果(1>小时&小时<12)
抛出新的IllegalArgumentException(“小时只能是1-12!”);
返回区。等于(“上午”)?小时:小时+12;
}

setAlarm
方法中,我们可以看到,如果当前时间已经过去,我们会增加1天,因此我们可以确保时间将在第二天左右提示。

您阅读了日历javadoc吗?有什么方法可以帮助你吗?我在javadoc中没有看到任何对我有帮助的东西……是的,我考虑过这个解决方案,但我想“自动化”一个通用解决方案,因为我有很多日期。对于每个日历,我可以添加一天,但时间总是相同的,因此我的计算总是错误的。
   public static int to24Hour(int hour, String zone) {
        if (1 > hour && hour < 12)
            throw new IllegalArgumentException("Hour must only be 1 - 12!");

        return zone.equals("am") ? hour : hour + 12;
    }