1

我有一个显示当前时间的开始按钮,我希望能够有一个停止时间比当前时间晚一小时的按钮。我该怎么做呢?

这是显示当前时间的按钮的代码

Button stopButton = (Button) this
            .findViewById(R.id.StartTrackingEditStopTime_button);
    // using SimpleDateFormat class
    SimpleDateFormat sdfStopTime = new SimpleDateFormat("hh:mm:ss a",
            Locale.ENGLISH);
    String newStoptime = sdfStopTime
            .format(new Date(System.currentTimeMillis()));

    stopButton.append(newStoptime);

非常感谢您提供有关如何执行此操作的任何帮助或建议。

4

4 回答 4

9

您设置new Date(System.currentTimeMillis())当前时间的方式是采用精确的当前毫秒并从中确定日期。如果您坚持使用毫秒,您需要做的是添加一个小时的毫秒或 1000 * 60 * 60 = 3600000。

因此,您可以通过以下确切代码满足您的需求的方式#1 :

Button stopButton = (Button) findViewById(R.id.StartTrackingEditStopTime_button);

SimpleDateFormat sdfStopTime = new SimpleDateFormat("hh:mm:ss a", Locale.ENGLISH);

String newStoptime = sdfStopTime.format(
        new Date(System.currentTimeMillis() + 3600000));

stopButton.setText(newStopTime);

这将起作用。实现这一点的方法#2,如果您系统地处理时间,它很有用,是使用 Calendar 对象。为此,请将上面的第三行替换为以下代码:

Calendar c = Calendar.getInstance();
c.add(Calendar.HOUR, 1);
Date d = c.getTime();
String newStopTime = sdfStopTime.format(d);

希望这可以帮助!你的选择。

于 2012-09-19T02:27:38.763 回答
2

这将所有内容都保存在 SimpleDateFormat 中。无需创建额外的对象。

SimpleDateFormat sdfStopTime = new SimpleDateFormat("hh:mm:ss a", Locale.ENGLISH);

System.out.println("Before: " + sdfStopTime.getCalendar().getTime());

sdfStopTime.getCalendar().add(Calendar.HOUR, 1);

System.out.println("After: " + sdfStopTime.getCalendar().getTime());

add() 方法的第一个参数是字段、小时、分钟等。第二个参数是要添加的量,如果为负,则减去。

于 2012-09-18T23:54:57.077 回答
1

使用Calendar类(javadoc)。假设您已经有一个Date now

Calendar calendar = Calendar.getInstance();
calendar.setTime(now);
calendar.add(Calendar.HOUR, 1);
Date inAnHour = calendar.getTime();

// format inAnHour with your DateFormat and set a button label
于 2012-09-18T23:48:43.797 回答
0

您必须在当前时间上增加一小时。

// You don't have to put System.currentTimeMillis() to the constructor.
// Default constructor of Date gives you the current time.
Date stopTime = new Date();
stopTime.setHours(stopTime.getHours() + 1);
String newStoptime = sdfStopTime.format(stopTime);
stopButton.append(newStoptime);

如果您不想使用已弃用的函数setHoursand getHours,请使用setTimeandgetTime并将 3,600,000 毫秒(1 小时)添加到当前时间:

stopTime.setTime(stopTime.getTime() + 60 * 60 * 1000);

代替

stopTime.setHours(stopTime.getHours() + 1);
于 2012-09-18T23:51:09.043 回答