在 Java 中,打印时间是一个常见的任务。Java 提供了多种方法来实现这一目标,其中最常用的是使用 java.util.Date 和 java.text.SimpleDateFormat 类。
// 获取当前时间 Date date = new Date(); // 设置要获取到什么样的时间 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 最后获取时间 String time = sdf.format(date); System.out.println(time); // 输出结果:2020-08-20 15:45:30
上面的代码使用了 SimpleDateFormat 类来格式化当前日期,并把它转换成字符串。SimpleDateFormat 类提供了多种格式化选项,可以根据需要进行修改。此外,Java 8 提供了新的 API 来打印时间,如 LocalTime、LocalDateTime 和 ZonedDateTime 等。
// 获取当前时间 LocalTime localTime = LocalTime.now(); System.out.println(localTime); // 输出结果:15:45:30.919 // 获取当前日期和时间 LocalDateTime localDateTime = LocalDateTime.now(); System.out.println(localDateTime); // 输出结果:2020-08-20T15:45:30.919 // 获取当前带有时区信息的完整日期和时间 ZonedDateTime zonedDateTime = ZonedDateTime.now(); System.out.println(zonedDateTime); // 输出结果:2020-08-20T15:45:30.919+08:00[Asia/Shanghai]
上面的代码使用了 Java 8 提供的新 API 来打印不同格式的当前时间。LocalTime 类用于打印小时、分钟和秒数;LocalDataTIme 类用于打印年、月、天和小时、分钟和秒数;ZonedDataTIme 类用于打印带有特定地理位置信息的完整信息。
Java 打印日期/时间格式处理日期,时间和日期时间值。
Java 打印日期/时间格式可以应用于格式值为long,Long,java.util.Calendar,java.util.Date,和java.time.temporal.TemporalAccessor类型。
长类型中的值解释为自1970年1月1日午夜UTC之后过去的毫秒数。
t大写变量T转换字符用于格式化日期/时间值。
日期/时间格式化的一般语法如下:
%<argument_index$><flags><width><conversion>
精度不适用于日期/时间格式。
对于日期/时间格式,转换是一个双字符序列。 第一个字符总是't'或'T'。 第二个字符,称为转换后缀,确定日期/时间参数的格式。
下表包含时间格式的后缀字符
后缀 | 含义 |
---|---|
H | 将时间格式设置为24小时制时钟的两位数小时。 有效值为00到23. 00用于午夜。 |
I | 格式化12小时制时钟的一位两位数小时。 有效值为01到12。 |
k | 格式化时间与H后缀相同,除了它不向输出添加前导零。 有效值为0到23。 |
l | 格式化时间与“I"后缀相同,除了它不添加前导零。 有效值为1到12。 |
M | 一小时内两位数的分钟。 有效值为00到59。 |
S | 一个两位数的秒。 有效值为00到60。 |
L | 一个三位数毫秒。 有效值为000到999。 |
N | 一个九位数的纳秒。 有效值为000000000至999999999。 |
p | 使用小写格式化特定于语言环境的上午或下午字符串。对于美国地区,“am"或“pm"。 要获取“AM"和“PM",请使用大写变量“T"作为转换字符。 |
z | 输出与GMT的数值时区偏移(例如,+0530)。 |
Z | 输出时区的字符串缩写(例如,CST,EST,IST等)。 |
s | 输出秒自1970年1月1日午夜UTC。 |
Q | 自1970年1月1日午夜UTC以来的输出毫秒数。 |
日期格式化的后缀字符的下表列表
信 | 含义 |
---|---|
B | 在美国语言环境中输出本地特定的月份全名,例如“一月",“二月"。 |
b | 输出特定于语言环境的缩写月份名称,例如美国语言环境中的“Jan",“Feb"。 |
h | 与“b"相同。 输出特定于语言环境的缩写月份名称,例如美国语言环境中的“Jan",“Feb"。 |
A | 输出一周中某天的特定于地区的全名,例如美国地区的“星期日”,“星期一”。 |
a | 输出一周中某天的特定于语言环境的短名称,例如美国语言环境的“Sun",“Mon"。 |
C | 将四位数年份除以100,并将结果格式化为两位数。 如果结果数字为一位数,它将添加一个前导零。 有效值为00到99.例如,如果四位数年份是2014,则它将输出20。 |
Y | 如果年份包含少于四位数,则输出带有前导零的四位数年份。 |
y | 输出年份的最后两位数字,如有必要,添加前导零。 2011年将输出11。 |
j | 一年中三位数的日期。 有效值为000到366。 |
m | 一个两位数的月份。 有效值为01到13.需要13的特殊值来支持农历日历。 |
d | 一个两位数的日期。 有效值为01到31。 |
e | 每月的日期。 有效值为1到31。 |
下表列出了日期/时间格式的后缀字符
格式 | 描述 |
---|---|
R | 输出时间以24小时时钟格式为“小时:分钟"。 它输出与%tH:%tM相同。 示例:11:23 |
T | 以24小时制输出时间,格式为“小时:分:秒"。 它输出相同的“%tH:%tM:%tS"。 示例11:23:10 |
r | 以24小时制输出时间,格式为“小时:分:秒"。 它输出相同的“%tH:%tM:%tS"。 示例11:23:10... |
D | 输出日期为“%tm /%td /%ty",例如“01/19/14" |
F | 输出日期为“%tY-%tm-%td",如“2014-01-19"。 |
c | 将日期和时间输出为“%ta%tb%td%tT%tZ%tY",例如“Wed Jan 20 12:22:06 CST 2014"。 |
以下代码显示如何使用日期时间格式化程序。 它在格式说明符中使用'<'标志来重用参数中的值。
import java.time.LocalDateTime; import java.time.Month; import java.util.Locale; public class Main { public static void main(String[] args) { Locale englishUS = Locale.US; LocalDateTime ldt = LocalDateTime.of(2014, Month.JANUARY, 25, 11, 48, 16); System.out.printf(englishUS, "US: %tB %<te, %<tY %<tT %<Tp%n", ldt); } }
上面的代码生成以下结果。
以下代码格式化默认语言环境中的当前日期和时间。 它使用ZonedDateTime参数,它保存当前日期/时间与时区。
import java.time.ZonedDateTime; public class Main { public static void main(String[] args) { ZonedDateTime currentTime = ZonedDateTime.now(); System.out.printf("%tA %<tB %<te, %<tY %n", currentTime); System.out.printf("%TA %<TB %<te, %<tY %n", currentTime); System.out.printf("%tD %n", currentTime); System.out.printf("%tF %n", currentTime); System.out.printf("%tc %n", currentTime); System.out.printf("%Tc %n", currentTime); } }
上面的代码生成以下结果。
Java正则表达式教程 -Java正则表达式边界要匹配一行的开头,或匹配整个单词,不是任何单词的一部分,我们必须为匹配器设置边界。...
Java线程教程 -Java线程状态停止,挂起和恢复线程下面的代码演示了如何模拟Thread类中的stop(),suspend()和resume()方法。publi...
JavaFX教程 -JavaFX路径JavaFX有其他内置的形状,如ArcCircleCubicCurveEllipseLinePathPolygonPolylineQuadCurveRectangleSVGPa...