时间表示类
一、SimpleDateFormat 类
1、SimpleDateFormat基本语法
- 一个与语言环境相关的格式化日期和分析日期的工具类。 利用该类可以将日期转换成文本,或者将文本转换成日期。
- 大写的H为24小时制表示一天中的小时数(0-23) ,小写的h为12小时制表示一天中的小时数(1-12)
- 大写的M表示年中的月份 ,小写的m表示小时中的分钟数
- 大写的S表示毫秒数 ,小写的s表示秒数
- 所以最常用的24小时制的具体日期的pattern为: yyyy-MM-dd HH:mm:ss
2、SimpleDateFormat方法小结
- format()方法的作用是将日期(Date)转换为文本, format()方法的输入参数是一个Date。
- parse()方法的作用是将文本转换为日期(Date),parse()方法的输入参数是一个文本,比如String。
示例:
public class Main
{
public static void main(String[] args) throws ParseException {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());//格式化
Date date = new Date();
String datastr = dateFormat.format(date);
System.out.println(datastr);
String time = "2023-03-14 15:12:04";
Date dataparse = dateFormat.parse(time);
System.out.println(dataparse);
//将时间戳转换为时间
long currentTimeMillis = System.currentTimeMillis();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());//格式化
Date date1 = new Date(currentTimeMillis);
String time = format.format(date1);
System.out.println(time);
}
}
参考资料:https://blog.csdn.net/u011033906/article/details/90489803
二、String.format()
1、String.format()字符串两个重载方法
- format(String format, Object… args):新字符串使用本地语言环境,制定字符串格式和参数生成格式化的新字符串。
format(Locale locale, String format, Object… args):使用指定的语言环境,制定字符串格式和参数生成格式化的字符串。
2、占位符类型
转换符 | 详细说明 | 示例 |
---|---|---|
%s | 字符串类型 | |
%c | 字符类型 | ‘h’ |
%b | 布尔类型 | true |
%d | 整数类型(十进制) | 88 |
%x | 整数类型(十六进制) | FF |
%o | 整数类型(八进制) | 77 |
%f | 浮点类型 | 7.77 |
%a | 十六进制浮点类型 | FF.35AE |
%e | 指数类型 | 9.38e+5 |
%g | 通用浮点类型 | |
%h | 散列码 | |
%d% | 百分比类型 | |
%n | 换行符 | |
%tx | 日期与时间类型 |
参考资料:https://blog.csdn.net/weixin_45606067/article/details/127449245
public static void main(String[] args) {
String str;
// %s
str = String.format("Hi,%s", "布鲁斯");
System.out.println(str);
// %c %n
str = String.format("字母c的大写是:%c %n", 'C');
System.out.println(str);
// %b
str = String.format("布尔结果是:%b", 3>2);
System.out.println(str);
// %d
str = String.format("100的一半是:%d", 100/2);
System.out.println(str);
// %x
str = String.format("100的16进制数是:%x", 100);
System.out.println(str);
// %o
str = String.format("100的8进制数是:%o", 100);
System.out.println(str);
// %f
str = String.format("50元的书打8.5折扣是:%f 元", 50 * 0.85);
System.out.println(str);
// %a
str = String.format("上面价格的16进制数是:%a", 50 * 0.85);
System.out.println(str);
// %e
str = String.format("上面价格的指数表示:%e", 50 * 0.85);
System.out.println(str);
// %g
str = String.format("上面价格的指数和浮点数结果的长度较短的是:%g", 50 * 0.85);
System.out.println(str);
// %d%
str = String.format("上面的折扣是:%d%%", 85);
System.out.println(str);
// %h
str = String.format("字母A的散列码是:%h",'A');
System.out.println(str);
}
3、 常用标识
标识 | 说明 |
---|---|
+ | 为正数或负数添加符号 |
0 | 在数字位数不够的地方补上0 |
空格 | 在位数不够的地方补上空格 |
, | 对数字分组,三位一隔,只可以用于十进制 |
( | 使用括号将去掉负号的负数包含进来 |
# | 让十六进制的数字加上OX,八进制的数字加上o; 辅助%x和%o的使用,相当于一种对数字进制的补充说明提示 |
< | 格式化前一个转换符锁描述的参数 |
- | 左对齐,不够位数的地方补上空格 |
public static void main(String[] args) {
// +
String str;
str = String.format("数字的正负表示:%+d %d %+d %d",8,8,-8,-8);
System.out.println(str);
// -
str = String.format("左对齐:%-6d",8);
System.out.println(str);
// 0
str = String.format("缺位补零:%06d",8);
System.out.println(str);
// 空格
str = String.format("缺位补空格:% 6d",8);
System.out.println(str);
str = String.format("缺位补空格:% 6d",-8);
System.out.println(str);
// ,
str = String.format("数字分组:%,d",123456789);
System.out.println(str);
// (
str = String.format("括号用法:%(d",-8888);
System.out.println(str);
str = String.format("括号用法:%(d",8888);
System.out.println(str);
// #
str = String.format("#括号用法(十六进制):%#x",12);
System.out.println(str);
str = String.format("#括号用法(八进制):%#o",12);
System.out.println(str);
// <
str = String.format("<括号用法:%f %<3.1f",3.14,3.2);
// "%<3.1f"作用的对象是前一个"%f"所作用的对象
System.out.println(str);
}
4、日期转换符
标志 | 说明 |
---|---|
c | 包括全部日期和时间信息 |
F | "年-月-日"格式 |
D | '月/日/年’格式 |
r | “HH:MM:SS PM”格式(12时制) |
T | “HH:MM:SS”格式(24时制) |
R | “HH:MM”格式(24时制) |
public static void main(String[] args) {
String str;
// c
str = String.format("全部日期和时间信息:%tc",new Date());
System.out.println(str);
// F
str = String.format("年-月-日格式:%tF",new Date());
System.out.println(str);
//D
str = String.format("月/日/年格式:%tD",new Date());
System.out.println(str);
//r
str = String.format("HH:MM:SS PM格式(12时制):%tr",new Date());
System.out.println(str);
//T
str = String.format("HH:MM:SS格式(24时制):%tT",new Date());
System.out.println(str);
//R
str = String.format("HH:MM格式(24时制):%tR",new Date());
System.out.println(str);
// %.2f保留两位小数
str = String.format("3.14保留两位小数:%.2f",3.141);
System.out.println(str);
}