Java日历始终显示相同的时间

Java日历始终显示相同的时间,java,calendar,Java,Calendar,下面是我的代码 public class TestCalendar { public static void main(String[] args){ int unique_id = Integer.parseInt("" + Calendar.HOUR + Calendar.MINUTE + Calendar.SECOND); System.out.println(unique_id); } } 日历时间应该给我 get和set的公共静态最终整小时

下面是我的代码

public class TestCalendar {

public static void main(String[] args){
    int unique_id = Integer.parseInt("" + Calendar.HOUR + Calendar.MINUTE
            + Calendar.SECOND);

    System.out.println(unique_id);
}
}
日历时间应该给我

get和set的公共静态最终整小时字段号,表示上午或下午的时间 下午小时用于12小时时钟(0-11)。中午和午夜由0表示,而不是0 到12点。例如,在晚上10:04:15.250,时间是10点

不管我运行这段代码多少次,它总是给我相同的唯一id(101213),我机器上的本地时间是下午1:30。我做错了什么


谢谢

Calendar.HOUR
Calendar.MINUTE
Calendar.SECOND
Calendar
类的
public static int
字段。它们的价值是

  • 日历小时:10
  • 日历分钟:12点和12点
  • 日历秒:13
您的
字符串
串联只是附加此值。要阅读
日历
,您可以这样做

calendar.get(Calendar.HOUR);
calendar.get(Calendar.MINUTE);

Calendar.HOUR
Calendar.MINUTE
Calendar.SECOND
Calendar
类的
public static int
字段。它们的价值是

  • 日历小时:10
  • 日历分钟:12点和12点
  • 日历秒:13
您的
字符串
串联只是附加此值。要阅读
日历
,您可以这样做

calendar.get(Calendar.HOUR);
calendar.get(Calendar.MINUTE);

您的代码只是连接常量,日历定义这些常量以标识某些字段。要获取这些字段的值,请调用
Calendar.get()
,并将常量标识符作为参数传递:

public class TestCalendar {

public static void main(String[] args){
    Calendar c = Calendar.getInstance();
    int unique_id = Integer.parseInt("" + c.get(Calendar.HOUR) + c.get(Calendar.MINUTE)
            + c.get(Calendar.SECOND));

    System.out.println(unique_id);
}
}
上述方法可行,但结果远远不是唯一的ID。
要获得一个唯一标识一个时间点的ID(以毫秒为单位),请考虑.< /p> 您的代码只是连接常数,日历定义了标识它的一些字段。要获取这些字段的值,请调用
Calendar.get()
,并将常量标识符作为参数传递:

public class TestCalendar {

public static void main(String[] args){
    Calendar c = Calendar.getInstance();
    int unique_id = Integer.parseInt("" + c.get(Calendar.HOUR) + c.get(Calendar.MINUTE)
            + c.get(Calendar.SECOND));

    System.out.println(unique_id);
}
}
上述方法可行,但结果远远不是唯一的ID。
若要获得唯一标识时间点的ID(以毫秒为单位),请考虑.< /P> < P> <代码>日历。小时<代码>(或<代码>分钟>代码>代码>第二代码>第二代码>是一个指示符,它指示我们要从<代码>日历< /Calp>实例中提取哪个字段,而不是值,例如,我们希望“从日历对象提取小时”,如下所示:

Calendar c = Calendar.getInstance();

int hour = c.get(Calendar.HOUR_OF_DAY); // in 24-hours,
                                        // or c.get(Calendar.HOUR) in 12-hours.
int minute = c.get(Calendar.MINUTE);
int second = c.get(Calendar.SECOND);

int weekday = c.get(Calendar.DAY_OF_WEEK);
int weekOfYear = c.get(Calendar.WEEK_OF_YEAR);

Calendar.HOUR
(或
MINUTE
SECOND
)只是一个指示符,指示我们要从
Calendar
实例中提取哪个字段,而不是值,即我们要从Calendar对象中提取小时,如下所示:

Calendar c = Calendar.getInstance();

int hour = c.get(Calendar.HOUR_OF_DAY); // in 24-hours,
                                        // or c.get(Calendar.HOUR) in 12-hours.
int minute = c.get(Calendar.MINUTE);
int second = c.get(Calendar.SECOND);

int weekday = c.get(Calendar.DAY_OF_WEEK);
int weekOfYear = c.get(Calendar.WEEK_OF_YEAR);

我不确定什么是需求,但是如果你想要系统时间,那么你可以使用这个“system.currentTimeMillis()”

我不确定什么是需求,但是如果你想要系统时间,那么你可以使用这个“system.currentTimeMillis()”

对于那些仍然有一些问题的人,就像我一样,特别是当您要多次打印时,您可能需要使用新的,如下所示:

System.out.println(""+new GregorianCalendar().get(Calendar.HOUR_OF_DAY)+":"+new GregorianCalendar().get(Calendar.MINUTE)+":"+new GregorianCalendar().get(Calendar.SECOND)+":"+new GregorianCalendar().get(Calendar.MILLISECOND));

对于那些像我一样对此仍有一些问题的人,特别是当您想打印多次时,您可能需要使用新的,如以下所示:

System.out.println(""+new GregorianCalendar().get(Calendar.HOUR_OF_DAY)+":"+new GregorianCalendar().get(Calendar.MINUTE)+":"+new GregorianCalendar().get(Calendar.SECOND)+":"+new GregorianCalendar().get(Calendar.MILLISECOND));

Calendar
这里是一个类,而不是实例引用的变量名,因此调用非静态的
get(int字段)
方法将无法编译。@WilliamPrice那么,我应该先做一个Calendar的getInstance,然后再做一个getmethod吗?@davida是的,我真的不希望它是“唯一的”。我只想注册用户注册的时间。它不一定非得非常精确。非常感谢。@Kraken是的,您需要一个
日历的实例。我看见大卫a。用一个例子更新了他的答案。
Calendar
这里是一个类,而不是引用实例的变量名,因此调用非静态的
get(int字段)
方法将无法编译。@WilliamPrice那么我应该先做一个Calendar的getInstance,然后再做一个getmethod吗?@davida是的,我真的不希望它是“唯一的”。我只想注册用户注册的时间。它不一定非得非常精确。非常感谢。@Kraken是的,您需要一个
日历的实例。我看见大卫a。用一个例子更新了他的答案。你到底想达到什么目的?如果您只是试图获取一个唯一的值,那么下到第二个值无论如何都不太可能实现,但是您可以在不进行任何字符串处理或日历访问的情况下实现。要基于时间获取唯一的id,您最好使用calendar。getTimeInMillis()@Jayaraj使用毫秒可以获得更高的精度,但仍然不具备“唯一性”在许多情况下,您似乎试图获得的将在时间01:01:23、01:12:03、11:02:03、13:01:23、13:12:03和23:02:03为您提供相同的“唯一”ID,即1123。想知道你想要它有多独特吗?在任何情况下,在2018年使用
LocalTime
from获取一天中的时间作为数字
Calendar
已经过时很久了,而且
java.time
非常适合使用。可能
LocalTime.toSecondOfDay​()
可以给你一个合适的ID。你到底想达到什么目的?如果您只是试图获取一个唯一的值,那么下到第二个值无论如何都不太可能实现,但是您可以在不进行任何字符串处理或日历访问的情况下实现。要基于时间获取唯一的id,您最好使用calendar。getTimeInMillis()@Jayaraj使用毫秒可以获得更高的精度,但仍然不具备“唯一性”在许多情况下,您似乎试图获得的将在时间01:01:23、01:12:03、11:02:03、13:01:23、13:12:03和23:02:03为您提供相同的“唯一”ID,即1123。想知道你想要它有多独特吗?在任何情况下,在2018年使用
LocalTime
from获取一天中的时间作为数字<代码>日历
为lo