-
ava.util.Date类封装了日期和时间信息。
-
Date 是表示时间实例的一个类,它的精度为毫秒。
-
Date类的大多数用于进行时间分量计算的方法已经被Calendar取代。
-
Date 对象初始化
Date d1 = new Date(); //Date() 分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒) Date d3 = new Date(100, 2, 21); //从1900年算起,负值往前推,正值大于对应时间范围往后推,月份以0-11计
-
after / before 测试此日期是否在指定日期之后或者之前
//测试此日期是否在指定日期之后。 System.out.println(d3.after(d1));//==false 判断时间前后d3=2000年,d1=2021年 //测试此日期是否在指定日期之前。 System.out.println(d3.before(d1));//==true 判断时间前后d3=2000年,d1=2021年
-
compareTo 比较两个日期的顺序
//比较两个日期的顺序。 System.out.println(d3.compareTo(d1)); //比较结果在前则返回-1,相等则返回0,在后则返回1
-
equals 比较两个日期的相等性
//比较两个日期的相等性。 System.out.println(d3.equals(d1)); //相等返回true,不相等返回false
-
toString 时间格式化输出
System.out.println(d1.toString()); //把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)
-
getTime()方法 返回:时间原点以来,此Date对象表示的毫秒数
new Date().getTime()
- 日期和时间模式
-
示例代码
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println(sdf.format(d1)); SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"+" 年中第w周"+" 月份中第W周" +" 年中第D天"+" 月份中第d天"+" 月份中的星期F"+" 星期中的E"+" a"+" 1-24小时中第k小时"+" 1-12小时中第h小时"); System.out.println(sdf1.format(d1)); System.out.println(d1.getTime()); Date d2 = new Date(1632706924115L); SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); System.out.println(sdf2.format(d2));
-
Calendar 类是一个抽象类,它为日历字段之间的转换提供了一些方法,瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。
-
用类方法 getInstance,以获得此类型的一个通用的对象
Calendar cal1 = Calendar.getInstance();//使用默认时区和语言环境获得一个日历。 Calendar cal2 = Calendar.getInstance(Locale.CHINESE);//使用默认时区和指定语言环境获得一个日历。 getInstance(TimeZone zone)//使用指定时区和默认语言环境获得一个日历 getInstance(TimeZone zone, Locale aLocale)//使用指定时区和语言环境获得一个日历。 -
getTime() 返回一个表示此 Calendar 时间值(从历元至现在的毫秒偏移量)的 Date 对象
getTimeInMillis() 返回此 Calendar 的时间值,以毫秒为单位。
System.out.println(cal1.getTime()); System.out.println(sdf.format(cal2.getTimeInMillis()));
-
add 增加月内天数
SimpleDateFormat sdf = new SimpleDateFormat(); //add 增加月内天数,若增加后超出月份天数范围,则会增加月份 cal1.add(Calendar.DAY_OF_MONTH, 2);//2021-9-29 System.out.println(sdf.format(cal1.getTime())); cal1.add(Calendar.DAY_OF_MONTH, 5);//2021-10-4 System.out.println(sdf.format(cal1.getTime()));
-
roll 月内回滚
//roll 月内回滚,超出月份天数范围,则不会增加月份,只在该月内变化天数 cal2.roll(Calendar.DAY_OF_MONTH, 2);//21-9-29 System.out.println(sdf.format(cal2.getTime())); cal2.roll(Calendar.DAY_OF_MONTH, 5);//21-9-4 System.out.println(sdf.format(cal2.getTime()));
-
¥ $ 符号 ; 会保留两位小数
//¥ getCurrencyInstance(Locale.CHINA) NumberFormat nfd = NumberFormat.getCurrencyInstance(Locale.CHINA); double d2 = 345678912; System.out.println(nf2.format(d2)); //$ getCurrencyInstance(Locale.US) NumberFormat nfdd = NumberFormat.getCurrencyInstance(Locale.US); double d3 = 456789123; System.out.println(nf3.format(d3));
-
科学计数法 getInstance(Locale.CHINA)
NumberFormat nf1 = NumberFormat.getInstance(Locale.CHINA); double d1 = 234567891; System.out.println(nf1.format(d1));
-
% 百分比 getPercentInstance()
//% 百分比 getPercentInstance() double d4 = 0.456789123; NumberFormat nf4 = NumberFormat.getPercentInstance(); System.out.println(nf4.format(d4));
-
保留一位小数,四舍五入
//保留一位小数,四舍五入 double d5 = 0.456789123; DecimalFormat df1 = new DecimalFormat("0.0"); System.out.println(df1.format(d5)); //保留一位小数,四舍五入 double d8 = 0.456789123; DecimalFormat df4 = new DecimalFormat("#.#"); System.out.println(df4.format(d8)); -
保留两位小数,不四舍五入,直接舍弃
//保留两位小数,不四舍五入,直接舍弃 double d6 = 1.456789123; DecimalFormat df2 = new DecimalFormat("0.00"); System.out.println(df2.format(d6)); //保留两位小数,不四舍五入,直接舍弃 DecimalFormat df5 = new DecimalFormat("#.00"); System.out.println(df5.format(d8)); -
示例
int num1 = 1234567; double num2 = 0.126543; DecimalFormat def1 = new DecimalFormat("#,###"); DecimalFormat def2 = new DecimalFormat("#.00"); DecimalFormat def3 = new DecimalFormat("00.#"); DecimalFormat def4 = new DecimalFormat("0.##E0");//科学计数法,E后面是指数 DecimalFormat def5 = new DecimalFormat("0.##%"); System.out.println(def1.format(num1)); System.out.println(def2.format(num2)); System.out.println(def3.format(num2)); System.out.println(def4.format(num1)); System.out.println(def5.format(num2)); //结果: // 1,234,567 // .13 // 00.1 // 1.23E6 // 12.65%



