我正在尝试将这个时间转换成一个适当的时间戳,用java?

我正在尝试将这个时间转换成一个适当的时间戳,用java?,java,Java,这是我的建议: 时间是上午8:3:8 时间是8:3:8 这是所需的输出: System.out.printf("%02d:%02d:%02d", hours, minutes, seconds); 时间是上午8:03:08 时间是08:03:08 所以我需要把它转换成期望的输出,如果它是8:03:04,那么8小时3分4秒应该像上面那样显示出来。在一位数前加零 package Assignment2; class clock{ public static void main(S

这是我的建议:

时间是上午8:3:8 时间是8:3:8

这是所需的输出:

System.out.printf("%02d:%02d:%02d", hours, minutes, seconds);
时间是上午8:03:08 时间是08:03:08

所以我需要把它转换成期望的输出,如果它是8:03:04,那么8小时3分4秒应该像上面那样显示出来。在一位数前加零

  package Assignment2;


  class clock{

  public static void main(String[] args) {
   clock timer = new clock();
   timer.setTime(8,02,59);
    timer.incTime(9);
     //timer.incTime(60);
       timer.display12hr();
     timer.display24hr();



           }


private int minutes, hours, seconds;

clock()
{
    minutes = 0;

    hours = 0;

    seconds = 0;

}
clock(int x, int y, int z)

{

    hours = x;

    minutes = y;

    seconds = z;
}

void setTime(int x, int y, int z)
{
    hours = x;
    minutes = y;
    seconds = z;
}

void incTime(int y)

{

    if (seconds + y > 59)

    {

        seconds = (seconds + y) - 60;
        minutes++;
    }
    else
        seconds += y;

}

void display12hr()

{
    if (hours > 12)
    {
        System.out.println("The time is " + (hours - 12) + ":" + minutes + ":" + seconds
                + "PM");
    }

    else
    {
        System.out.println("The time is " + (hours) + ":" + minutes + ":" + seconds +"AM");
    }
}

void display24hr()
{
    System.out.println("The time is " + (hours) + ":" + minutes + ":" + seconds);
}

}

对于要打印的任何数字,如果小于10,则必须在前面添加一个0(假设所有值都打印到2个位置)。听起来像是函数的作业…

尝试使用格式化输出:

System.out.printf("%02d:%02d:%02d", hours, minutes, seconds);

如前所述,当数字没有2位数时,这将用0填充数字。

您可以使用
十进制格式类

例如:

int[] numbers = { 1, 5, 10, 15};
for(int num : numbers) {
    DecimalFormat formatter = new DecimalFormat("00");
    System.out.println(formatter.format(num));
}
输出:

01
05
10
15

使用Calendar和SimpleDataFormat对象分别为您提供了丰富的日期和时间功能以及丰富的日期和时间格式功能

你可以像你的课堂一样手动控制时间的测量

    String datePattern = "hh:mm:ss";
    SimpleDateFormat formatter = new SimpleDateFormat(datePattern);
    Calendar cal = Calendar.getInstance(Locale.US);
    System.out.println("Time = " + formatter.format(cal.getTimeInMillis()));
    cal.clear();
    cal.set(2013, 8, 6, 0, 0, 0);
    System.out.println("Start Time = " + formatter.format(cal.getTimeInMillis()));
    cal.set(2013, 8, 6, 8, 2, 59);
    System.out.println("Start Time = " + formatter.format(cal.getTimeInMillis()));
    cal.add(Calendar.SECOND, 9);
    System.out.println("End Time 12 hours = " + formatter.format(cal.getTimeInMillis()));
    datePattern = "HH:mm:ss";
    formatter = new SimpleDateFormat(datePattern);
    cal.add(Calendar.HOUR, 8);
    System.out.println("End Time 24 hours = " + formatter.format(cal.getTimeInMillis()));
结果输出:

    Time = 12:32:31
    Start Time = 12:00:00
    Start Time = 08:02:59
    End Time 12 hours = 08:03:08
    End Time 24 hours = 16:03:08
    start = 2013-32-07 12:32:31:656
    end = 2013-32-07 12:32:31:656
或者,如果您只是想要与事件关联的开始和停止时间

    datePattern = "yyyy-mm-dd hh:mm:ss:SS";
    formatter = new SimpleDateFormat(datePattern);
    System.out.println("start = " + formatter.format(Calendar.getInstance(Locale.US).getTimeInMillis()));
    System.out.println("end = " + formatter.format(Calendar.getInstance(Locale.US).getTimeInMillis()));
结果输出:

    Time = 12:32:31
    Start Time = 12:00:00
    Start Time = 08:02:59
    End Time 12 hours = 08:03:08
    End Time 24 hours = 16:03:08
    start = 2013-32-07 12:32:31:656
    end = 2013-32-07 12:32:31:656

这取决于你的目标,但你有很多选择。

在这个
timer.setTime(8,02,59)中
02
是八进制。@SotriosDelimanolis 02也是2进制;你会遇到麻烦的是08年或09年……可能是