在 java 中将时间变量转换为 hh:mm 格式
convert time variable to hh:mm format in java
我是 java 的初学者,我使用下面的代码可以生成 "hh:mm:ss"
格式的随机时间。我不知道如何调整我的代码以“hh:mm”格式显示时间,因为我不熟悉
日期和时间 java 个库。我已经检查过这里的帖子,比如 converting time from hh:mm:ss to hh:mm in java 但它在这里没有帮助。
import java.util.Random;
import java.sql.Time;
final Random random = new Random();
final int millisInDay = 24*60*60*1000;
Time time = new Time((long)random.nextInt(millisInDay));
我也试过了:
// creates random time in hh:mm format for 0-12 hours but I want the full 24 hour timeline
public static String createRandomTime() {
DateFormat format = new SimpleDateFormat("h.mm aa");
String timeString = format.format(new Date()).toString();
return timeString;
}
非常感谢你的帮助。
既然您使用的是 SimpleDateFormat
,我建议您看看 its documentation
在那里,您可以看到 h
是 AM/PM 格式的小时。由于您需要 24 小时格式,因此您需要 H
或 k
,具体取决于您希望它是 0-23 还是 1-24
你可以试试下面的代码,
public void testDateFormat() {
String format = "HH:mm"; //24 hours format
//hh:mm aa for 12 hours format
DateFormat dateFormat = new SimpleDateFormat(format);
String date = dateFormat.format(new Date());
System.out.println(date);
}
有一个很棒的 Javadoc 可以用来解释各种选项的细节。请同时参考 Javadoc https://docs.oracle.com/javase/10/docs/api/java/text/SimpleDateFormat.html
您可以编写一个方法来创建适当的随机小时和随机分钟,然后构建它们的 java.time.LocalTime
和 return 所需的 String
表示。
这是一个例子:
public static String createRandomTime() {
// create valid (in range) random int values for hours and minutes
int randomHours = ThreadLocalRandom.current().nextInt(0, 23);
int randomMinutes = ThreadLocalRandom.current().nextInt(0, 59);
// then create a LocalTime from them and return its String representation
return LocalTime.of(randomHours, randomMinutes).format(
// using a desired pattern
DateTimeFormatter.ofPattern("HH:mm")
);
}
像这样在 main
中执行该方法十次
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
System.out.println(createRandomTime());
}
}
将产生类似(不一定等于)
的输出
08:16
07:54
17:15
19:41
14:24
12:00
12:33
11:00
09:11
02:33
请注意,如果您只需要另一种格式,int
值和从中创建的相应 LocalTime
将不会改变。您可以轻松地将模式切换为另一个模式(也许使模式 String
成为方法的参数)。例如。你可以 "hh:mm a"
String
像 10:23 AM
.
我是 java 的初学者,我使用下面的代码可以生成 "hh:mm:ss"
格式的随机时间。我不知道如何调整我的代码以“hh:mm”格式显示时间,因为我不熟悉
日期和时间 java 个库。我已经检查过这里的帖子,比如 converting time from hh:mm:ss to hh:mm in java 但它在这里没有帮助。
import java.util.Random;
import java.sql.Time;
final Random random = new Random();
final int millisInDay = 24*60*60*1000;
Time time = new Time((long)random.nextInt(millisInDay));
我也试过了:
// creates random time in hh:mm format for 0-12 hours but I want the full 24 hour timeline
public static String createRandomTime() {
DateFormat format = new SimpleDateFormat("h.mm aa");
String timeString = format.format(new Date()).toString();
return timeString;
}
非常感谢你的帮助。
既然您使用的是 SimpleDateFormat
,我建议您看看 its documentation
在那里,您可以看到 h
是 AM/PM 格式的小时。由于您需要 24 小时格式,因此您需要 H
或 k
,具体取决于您希望它是 0-23 还是 1-24
你可以试试下面的代码,
public void testDateFormat() {
String format = "HH:mm"; //24 hours format
//hh:mm aa for 12 hours format
DateFormat dateFormat = new SimpleDateFormat(format);
String date = dateFormat.format(new Date());
System.out.println(date);
}
有一个很棒的 Javadoc 可以用来解释各种选项的细节。请同时参考 Javadoc https://docs.oracle.com/javase/10/docs/api/java/text/SimpleDateFormat.html
您可以编写一个方法来创建适当的随机小时和随机分钟,然后构建它们的 java.time.LocalTime
和 return 所需的 String
表示。
这是一个例子:
public static String createRandomTime() {
// create valid (in range) random int values for hours and minutes
int randomHours = ThreadLocalRandom.current().nextInt(0, 23);
int randomMinutes = ThreadLocalRandom.current().nextInt(0, 59);
// then create a LocalTime from them and return its String representation
return LocalTime.of(randomHours, randomMinutes).format(
// using a desired pattern
DateTimeFormatter.ofPattern("HH:mm")
);
}
像这样在 main
中执行该方法十次
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
System.out.println(createRandomTime());
}
}
将产生类似(不一定等于)
的输出08:16
07:54
17:15
19:41
14:24
12:00
12:33
11:00
09:11
02:33
请注意,如果您只需要另一种格式,int
值和从中创建的相应 LocalTime
将不会改变。您可以轻松地将模式切换为另一个模式(也许使模式 String
成为方法的参数)。例如。你可以 "hh:mm a"
String
像 10:23 AM
.