关于String类的format()方法对日期、时间的格式化

一、格式化日期

转换字符:

'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));
    }
}

image

 

二、格式化时间

转换字符:

'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/1000Long.MAX_VALUE/1000 之间的差值。
'Q' 自协调世界时 (UTC) 1970 年 1 月 1 日 00:00:00 至现在所经过的毫秒数,即 Long.MIN_VALUELong.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));
    }
}

image

 

二、格式化日期/时间组合

转换字符:

'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));
    }
}

image

转载于:https://www.cnblogs.com/asonofthesoil/archive/2013/05/25/3099046.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值