一、格式化日期
转换字符:
'B' | 特定于语言环境的月份全称,例如 "January" 和 "February"。 |
'b' | 特定于语言环境的月份简称,例如 "Jan" 和 "Feb"。 |
'h' | 与 'b' 相同。 |
'A' | 特定于语言环境的星期几全称,例如 "Sunday" 和 "Monday" |
'a' | 特定于语言环境的星期几简称,例如 "Sun" 和 "Mon" |
'C' | 除以 100 的四位数表示的年份,被格式化为必要时带前导零的两位数,即 00 - 99 |
'Y' | 年份,被格式化为必要时带前导零的四位数(至少),例如,0092 等于格里高利历的 92 CE。 |
'y' | 年份的最后两位数,被格式化为必要时带前导零的两位数,即 00 - 99。 |
'j' | 一年中的天数,被格式化为必要时带前导零的三位数,例如,对于格里高利历是 001 - 366。 |
'm' | 月份,被格式化为必要时带前导零的两位数,即 01 - 13。 |
'd' | 一个月中的天数,被格式化为必要时带前导零两位数,即 01 - 31 |
'e' | 一个月中的天数,被格式化为两位数,即 1 - 31。 |
代码:
import java.util.Date; import java.util.Locale; public class FormatDateDemo { public static void main(String[] args) { Date date = new Date(); System.out.println("默认日期格式:" + date); System.out.println("指定语言环境的星期简称:" + String.format(Locale.US, "%ta", date)); System.out.println("指定语言环境的星期全称:" + String.format(Locale.CHINA,"%tA", date)); System.out.println("指定语言环境的月份简称:" + String.format(Locale.US, "%tb", date)); System.out.println("指定语言环境的月份全称:" + String.format(Locale.CHINA,"%tB", date)); System.out.println("2位的年:" + String.format("%ty", date)); System.out.println("4位的年:" + String.format("%tY", date)); System.out.println("一年中的哪一天:" + String.format("%tj", date)); System.out.println("两位的月:" + String.format("%tm", date)); System.out.println("一个月中的哪一天(带0):" + String.format("%td", date)); System.out.println("一个月中的哪一天:" + String.format("%te", date)); } }
二、格式化时间
转换字符:
'H' | 24 小时制的小时,被格式化为必要时带前导零的两位数,即 00 - 23。 |
'I' | 12 小时制的小时,被格式化为必要时带前导零的两位数,即 01 - 12。 |
'k' | 24 小时制的小时,即 0 - 23。 |
'l' | 12 小时制的小时,即 1 - 12。 |
'M' | 小时中的分钟,被格式化为必要时带前导零的两位数,即 00 - 59。 |
'S' | 分钟中的秒,被格式化为必要时带前导零的两位数,即 00 - 60 ("60" 是支持闰秒所需的一个特殊值)。 |
'L' | 秒中的毫秒,被格式化为必要时带前导零的三位数,即 000 - 999。 |
'N' | 秒中的毫微秒,被格式化为必要时带前导零的九位数,即 000000000 - 999999999。 |
'p' | 特定于语言环境的 上午或下午 标记以小写形式表示,例如 "am" 或 "pm"。使用转换前缀 'T' 可以强行将此输出转换为大写形式。 |
'z' | 相对于 GMT 的 RFC 822 格式的数字时区偏移量,例如 -0800。 |
'Z' | 表示时区缩写形式的字符串。Formatter 的语言环境将取代参数的语言环境(如果有)。 |
's' | 自协调世界时 (UTC) 1970 年 1 月 1 日 00:00:00 至现在所经过的秒数,即 Long.MIN_VALUE/1000 与 Long.MAX_VALUE/1000 之间的差值。 |
'Q' | 自协调世界时 (UTC) 1970 年 1 月 1 日 00:00:00 至现在所经过的毫秒数,即 Long.MIN_VALUE 与 Long.MAX_VALUE 之间的差值。 |
代码:
import java.util.Date; import java.util.Locale; public class FormatTimeDemo { public static void main(String[] args) { Date date = new Date(); System.out.println("默认时间格式:" + date); System.out.println("两位24小时制的小时:" + String.format("%tH", date)); System.out.println("两位12小时制的小时:" + String.format("%tI", date)); System.out.println("24小时制的小时:" + String.format("%tk", date)); System.out.println("12小时制的小时:" + String.format("%tl", date)); System.out.println("两位小时中的分钟:" + String.format("%tM", date)); System.out.println("两位分钟中的秒:" + String.format("%tS", date)); System.out.println("三位秒中的毫秒:" + String.format("%tL", date)); System.out.println("九位秒中的毫微秒:" + String.format("%tN", date)); System.out.println("表示时区缩写形式的字符串:" + String.format("%tZ", date)); System.out.println("特定于语言环境的上午或下午标记以小写(大写%Tp)形式表示:" + String.format(Locale.US, "%tp", date)); } }
二、格式化日期/时间组合
转换字符:
'R' | 24 小时制的时间,被格式化为 "%tH:%tM" |
'T' | 24 小时制的时间,被格式化为 "%tH:%tM:%tS"。 |
'r' | 12 小时制的时间,被格式化为 "%tI:%tM:%tS %Tp"。上午或下午标记 ('%Tp') 的位置可能与语言环境有关。 |
'D' | 日期,被格式化为 "%tm/%td/%ty"。 |
'F' | ISO 8601 格式的完整日期,被格式化为 "%tY-%tm-%td"。 |
'c' | 日期和时间,被格式化为 "%ta %tb %td %tT %tZ %tY",例如 "Sun Jul 20 16:17:00 EDT 1969"。 |
代码:
import java.util.Date; public class FormatDateOrTimeDemo { public static void main(String[] args) { Date date = new Date(); System.out.println("默认的日期时间格式:" + date); System.out.println("24小时制的时间,被格式化为小时和分钟 :" + String.format("%tR", date)); System.out.println("24小时制的时间,被格式化为小时、分钟和秒:" + String.format("%tT", date)); System.out.println("12小时制的时间,被格式化为:" + String.format("%tr", date)); System.out.println("日期被格式化为:" + String.format("%tD", date)); System.out.println("ISO 8601格式的完整日期,被格式化为:" + String.format("%tF", date)); System.out.println("日期和时间被格式化为:" + String.format("%tc", date)); } }