以HH:MM格式打印时间

时间:2013-05-30 02:40:18

标签: java datetime

我正在编写一个Java程序,我需要将小时和分钟增加1并以HH:MM格式输出当前时间。如果小时是23,它应该回到0或分钟是59,分钟应该是0,小时应该到下一个小时。这是我到目前为止所做的,但我并不完全确定它是对的。我也不确定这是否是让时间显示的正确方法:小时和分钟之间。这是我的代码:

//TimeOfDay program

public class TimeOfDay
{

    private int hour;
    private int minute;


    /**
     * Constructor for objects of class TimeOfDay
     */
    public TimeOfDay( int h, int m )
    {
        setHr( h );
        setMin( m );
    String time = "17:46";
    String [] values = time.split(":");

    }

    public TimeOfDay()
    {

    }




    /**
    - set the hour using an input parameter h
    - set the minute using an input parameter m
    - add one hour (increase hour by 1)
    - add one minute (increase minute by 1)
    - output the current time in HH:MM format
         (single digit hour or minute must have a leading 0, e.g. 04:09) 
     */


   public void setHr (int h )
   {
       if (0 <= h && h < 23 )
        hour = h;
       else 
        hour = 0;
    }

    public void setMin (int m)
    {
       if (0 <= m && m < 59)
        minute = m;
       else
        minute = 0;
    }

    public void addHour()
    {
        hour++;

        if ( hour > 23 )
        hour = 0;
    }

    public void addMinute()
    {
        minute++;

        if ( minute > 59 )
        {
            minute = 0;
            addHour(); //increment hour
        }
    }

    public int  printCurrentTime()
    {
        if (hour < 10)
        System.out.print( "0" + hour + ":");

        if (minute < 10)
        System.out.print( "0" + minute);

        return time.split;


    }
}

4 个答案:

答案 0 :(得分:3)

已有图书馆为您开展工作类型,例如CalenderJodaTime。后者使这种工作特别容易。单个班级LocalTime可以管理添加和格式化:

LocalTime localTime = new LocalTime("17:46");
LocalTime newTime = localTime.plusHours(1).plusMinutes(1); 
System.out.println(newTime.toString("HH:mm"));

答案 1 :(得分:2)

您可以使用Calendar中的内置java.util类来实现这一目标。使用add(field, value),您可以增加小时数,而日历则负责日期中断。

要获得HH:MM格式,您可以使用SimpleDateFormat格式为“HH:mm”。

Calendar c = Calendar.getInstance(); //automatically set to current time
c.add(Calendar.HOUR, 1);

SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm");
System.out.println(dateFormat.format(c.getTime()));

答案 2 :(得分:2)

这显然是家庭作业,所以我不打算推​​荐一个能为你做这件事的图书馆。

您的代码看起来不错,但 printCurrentTime()方法除外,这是没有意义的。

所有这些方法应该是从小时和分钟构建一个字符串。

应该这么简单:

public void printCurrentTime() {
    System.out.println(hour + ":" + minute);
}

或者如果你想让它返回一个String(可以在别处打印),它将如下所示:

public String toString() {
    return hour + ":" + minute;
}

让该方法返回int是没有意义的。

如果要打印,应该返回void

如果你想让它返回一个字符串,它应该返回String


我只是阅读了您的代码中的注释...其中提到了您的问题中未包含的要求。

因为您需要填充小时和分钟(当它们小于10时),您需要添加更多逻辑。

我个人会用String.format()来填补您的号码......

但....由于这是作业,你可能不应该这样做。

我会创建两个简单的方法:

  1. getHourString()
  2. getMinuteString()
  3. 两者都应该返回字符串。

    每个方法中的逻辑都非常简单。有点像这样:

    private String getHourString() {
        String h = "";
        if (hour < 10) {
            h = "0";
        }
        return h + hour;
    }
    

    您可以对getMinuteString()执行相同的操作。

    您的printCurrentTime()方法可以合并这些方法的输出(中间有:)。

    换句话说:

    public void printCurrentTime() {
        String s = getHourString() + ":" + getMinuteString();
        System.out.println(s);
    }
    

答案 3 :(得分:1)

我会更改printCurrentTime()

public int  printCurrentTime() {
     System.out.printf("%02d:%02d%n", hour, minute);
     return hour * 60 + minute;
}

其余代码似乎没问题