目录
1. Date类
一个Date对象,表示某一时刻的时间。
构造方法:
Date date = new Date();
Date date = new Date(long d);
源码:
public Date() { this(System.currentTimeMillis()); }
public Date(long date) { fastTime = date; }
date.getYear(); 过期方法,不建议使用,但有新方法代替
import java.util.Date;
public class DateDemo {
public static void main(String[] args) {
//long t = System.currentTimeMillis(); //t = 1637485760505
Date date = new Date();//创建一个日期对象,里面包含了程序运行时的那一刻的时间,
//提供方法方便操作
System.out.println(date.getTime());//1637485760505 日期对象 转为 long类型时间值
System.out.println(date.getYear()+1900);// 称为过期方法,不建议使用,有新方法代替
System.out.println(date.getMonth()+1);//从0开始,到11月结束
Date date1 = new Date(1637483235781L);
System.out.println(date1.getHours()); // 小时
System.out.println(date1.getMinutes()); // 分
System.out.println(date1.getSeconds()); //秒
}
}
2. Calendar类
一个抽象的方法,抽象类不能表示创建对象。
Calendar.getInstance(); 获得一个子类的对象,使用 GregorianCalendar 公历
方法:
例:c1.get(Calendar. YEAR);
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class CalendarDemo {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
//Calendar c1 = new GregorianCalendar();
System.out.println(c);
/*
java.util.GregorianCalendar[time=1637840865774,areFieldsSet=true,areAllFieldsSet=true,
lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",
offset=28800000,dstSavings=0,useDaylight=false,transitions=31,lastRule=null],
firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2021,MONTH=10,
WEEK_OF_YEAR=48,WEEK_OF_MONTH=4,DAY_OF_MONTH=25,DAY_OF_YEAR=329,DAY_OF_WEEK=5,DAY_OF_WEEK_IN_MONTH=4,
AM_PM=1,HOUR=7,HOUR_OF_DAY=19,MINUTE=47,SECOND=45,MILLISECOND=774,ZONE_OFFSET=28800000,DST_OFFSET=0]
*/
int date = c.get(Calendar.DAY_OF_MONTH);//本月第几天
System.out.println(date);//26日
System.out.println(c.get(Calendar.WEEK_OF_YEAR));//本年第几周 48
System.out.println(c.get(Calendar.WEEK_OF_MONTH));//本月第几周 4
System.out.println(c.get(Calendar.DAY_OF_MONTH));//本月第几天 26
System.out.println(c.get(Calendar.DAY_OF_YEAR));// 本年第几天 330
System.out.println(c.get(Calendar.DAY_OF_WEEK));// 本周第几天 6
System.out.println(c.get(Calendar.DAY_OF_WEEK_IN_MONTH));//本月还剩几天 4天
System.out.println(c.get(Calendar.AM_PM));//1表示下午,0表示上午
System.out.println(c.get(Calendar.HOUR));//下午4点
System.out.println(c.get(Calendar.HOUR_OF_DAY));//16点
System.out.println(c.get(Calendar.MINUTE));//40分
Date d = c.getTime();
System.out.println(d);//Fri Nov 26 16:49:00 CST 2021
long t = c.getTimeInMillis();
System.out.println(t);//1637916540843
}
}
3. SimpleDateFormat类
SimpleDateFormat类是日期格式化类。
将字符串转换成 Date(对象)
例:在网页上输入生日(字符串:2001-10-15)-->(提交给java)后台 --> 转换为Date对象
将Date(对象)转换为 字符串
例:java中的Date(对象)----> 传给网页 ---> 转换为字符串
构造方法:
SimpleDateFormat(格式); 例: yyyy-MM-dd
public SimpleDateFormat(String pattern)规则 { this(pattern, Locale.getDefault(Locale.Category.FORMAT)); }
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class SimpleDateFormatDemo {
public static void main(String[] args) {
/*
第一种:将字符串转换为Date()对象
*/
String bath = " 2001-04-01 10:15:23 214";
SimpleDateFormat spd = new SimpleDateFormat(" yyyy-MM-dd HH:mm:ss SSS");
try {
Date date = spd.parse(bath);//需要抛出异常
System.out.println(date);//Sun Apr 01 10:15:23 CST 2001
} catch (ParseException e) {
e.printStackTrace();
}
/*
第二种:将Date()对象 转换为 字符串
*/
Date d = new Date();
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS E");
String s = sdf1.format(d);
System.out.println(d); //Fri Nov 26 17:06:08 CST 2021
}
}
4. BigInteger类(大整数)
BigInteger类型的数字范围较Integer,Long类型的数字范围要大得多,它支持任意精度的整数。
构造方法:
BigInteger(String val);
BigInteger(byte[] val);
等
基本运算方法:
add(),subtract(),multiply(),divide();
import java.math.BigInteger;
public class BigIntegerDemo {
public static void main(String[] args) {
BigInteger b1 = new BigInteger("9223372036854775807111111111111111111");
BigInteger b2 = new BigInteger("2222222222222222222222222222222222222");
BigInteger b3 = b1.add(b2);//两个大整数相加
BigInteger b4 = b1.subtract(b2); //两个大整数相减
System.out.println(b1);
System.out.println(b2);
System.out.println(b3);
System.out.println(b4);
System.out.println(b1.multiply(b3));//两个大整数相乘
System.out.println(b1.divide(b3));//除法,结果为0
}
}
5. BigDecimal类(大浮点)
原因:
十进制值通常没有完全相同的二进制表示形式;十进制数的二进制表示形式可能不精确。只能无限接近于那个值。
例:
public class BigDecimalDemo {
public static void main(String[] args) {
double a = 10-9.9;
System.out.println(a);//0.09999999999999964
double b = 0.8-0.7;
System.out.println(b);//0.10000000000000009
System.out.println(a==b);//false
System.out.println(10-9.4);//0.5999999999999996
}
}
构造方法:
BigDecimal(String val);
源码:
public BigDecimal(String val) { this(val.toCharArray(), 0, val.length()); }
基本运算方法:
add(),subtract(),multiply(),divide();
public class BigDecimalDemo {
/*
BigDecimal 大浮点
*/
public static void main(String[] args) {
//System.out.println(12-11.9);//0.09999999999999964
BigDecimal b1 = new BigDecimal("12");
BigDecimal b2 = new BigDecimal("11.9");
System.out.println(b1.subtract(b2));
BigDecimal b3 = new BigDecimal("10");
BigDecimal b4 = new BigDecimal("3");
// 精度 舍入模式
System.out.println(b3.divide(b4,3,BigDecimal.ROUND_CEILING));
}
}