时间
时间处理类
public class Demo01 {
public static void main(String[] args) {
Date date = new Date();
System.out.println(date);
}
}
- 将long转为日期:public Date(long date)
- 将Date转为long:public long getTime()
public static void main(String[] args) {
Date date = new Date();
long time = date.getTime();
System.out.println(time);
System.out.println(new Date(time));
}
Date
public static void main(String[] args) {
Date date = new Date();
/* System.out.println(date);
System.out.println(date.toGMTString());
System.out.println(date.toLocaleString());
System.out.println(date.getYear());
System.out.println(date.getMonth());//0-11
System.out.println(date.getTime());*/
Date date1 = new Date(1673487776491L);
System.out.println(date1);
java.sql.Date sqlDate = new java.sql.Date(1673487776491L);
System.out.println(sqlDate);
/*java.sql.Date 和 java.util.Date 区别
区别:util.Date 表示年月日时分秒
sql.Date 只能表示年月日
继承关系
*/
//java.util.Date----》java.sql.Date
java.sql.Date date2 = new java.sql.Date(new Date().getTime());
System.out.println(date2);
//java.sql.Date----》java.util.Date
Date date3 = date2;
System.out.println(date3);
java.sql.Date date4 = java.sql.Date.valueOf("2021-01-12");
System.out.println(date4);
}
Calender(日历类)
public static void main(String[] args) {
//Calendar不能创建对象,但是可以创建子类
Calendar calendar = Calendar.getInstance();
System.out.println(calendar);
System.out.println(calendar.get(Calendar.YEAR));
System.out.println(calendar.get(Calendar.MONTH));
System.out.println(calendar.get(Calendar.DATE));
System.out.println(calendar.get(Calendar.DAY_OF_WEEK));
System.out.println(calendar.getActualMaximum(Calendar.DATE));
System.out.println(calendar.getActualMinimum(Calendar.DATE));
calendar.set(Calendar.YEAR, 2008);
calendar.set(Calendar.MONTH, 1);
calendar.set(Calendar.DATE, 12);
System.out.println(calendar);
calendar.setTime(Date.valueOf("2023-01-12"));
System.out.println(calendar);
}
写一个日历
public class MyCalender {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println(“输入”);
String date = scanner.next();
Calendar calendar = new GregorianCalendar();
calendar.setTime(Date.valueOf(date));
//显示日历的头部
System.out.println("日\t一\t二\t三\t四\t五\t六");
//本月最大天数
int maxDay = calendar.getActualMaximum(Calendar.DATE);
//计数器, 每7天换行
int count = 0;
//求当天的日期
int nowDay = calendar.get(Calendar.DATE);
//本月第一天是一周的第几天
//1. 将当前日期变为本月的一号
calendar.set(Calendar.DATE, 1);
//2. 获取一号对应的是一周的第几天:
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
//获取1号前的 \t 的个数
int tab = dayOfWeek - 1;
for (int i = 1; i <= tab ; i++) {
System.out.print("\t");
}
count += tab;
//对从 1-maxDay
for (int i = 1; i < maxDay; i++) {
if (i == nowDay) {
System.out.print(i + "*\t");
}else {
System.out.print(i + "\t");
}
count++;
if (count % 7 == 0) {
System.out.println();
}
}
}
}
LocalDate、LocalTime、LocalDateTime的使用
-
LocalDate、LocalTime、LocalDateTime类是其中较重要的几个类,它们的实例是不可变的对象,分别表示使用ISO-8601日历系统的日期、时间、日期和时间。它们提供了简单的本地日期或时间,并不包含当前的时间信息,也不包含与时区相关的信息。
-
- LocalDate代表IOS格式(yyyy-MM-dd)的日期,可以存储生日、纪念日等日期。
- LocalTime表示一个时间,而不是日期。
- LocalDateTime是用来表示日期和时间的,这是一个最常用的类之一。
-
注:ISO-8601日历系统是国际标准化组织制定的现代公民的日期和时间的表示法,也就是公历。
public static void main(String[] args) {
//获取当前日期
LocalDate localDate = LocalDate.now();
LocalTime localTime = LocalTime.now();
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println(localDate);
System.out.println(localTime);
System.out.println(localDateTime);
LocalDateTime of = LocalDateTime.of(2020, 10, 6, 13, 23, 43);
System.out.println(of);
//体现不可变性
LocalDate localDate1 = localDate.withDayOfMonth(22);
System.out.println(localDate1);
System.out.println(localDate);
LocalDateTime localDateTime1 = localDateTime.plusMonths(3);
System.out.println(localDateTime1);
System.out.println(localDateTime);
}
Instant类的使用
public static void main(String[] args) {
//1秒=1000毫秒=10^6微妙=10^9纳秒
Instant instant = Instant.now();
System.out.println(instant);
OffsetDateTime offsetDateTime = instant.atOffset(ZoneOffset.ofHours(8));
System.out.println(offsetDateTime);
long l = instant.toEpochMilli();
System.out.println(l);
//通过给定的毫秒数,获取实例
Instant instant1 = Instant.ofEpochMilli(1673491190662L);
System.out.println(instant1);
}
SimpleDateFormat
SimpleDateFormat程序类。该类是DateFormat子类,在该类中提供有如下的方法
[DateFormat继承]将日期格式化:public final String format(Date date)
[DateFormat继承]将字符串转为日期:public Date parse(String text,ParsePosition pos)
构造方法:public SimpleDateFormat(String pattern)
- 日期格式:年(yyyy),月(MM),日(dd),时(HH),分(mm),秒(ss),毫秒(SSS)
public static void main(String[] args) throws ParseException {
//格式化日期
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String format = simpleDateFormat.format(date);
System.out.println(format);
//字符串转日期
String date1 = "2023-01-12 10:45:24";
Date date2 = simpleDateFormat.parse(date1);
System.out.println(date2);
}
大数值
BigInteger
public static void main(String[] args) {
BigInteger bigInteger = new BigInteger("232341341341234123413241413244123");
BigInteger bigInteger1 = new BigInteger("231231312321");
System.out.println(bigInteger.add(bigInteger1));
System.out.println(bigInteger.subtract(bigInteger1));
System.out.println(bigInteger.multiply(bigInteger1));
System.out.println(bigInteger.divide(bigInteger1));
//求余除法
BigInteger[] bigIntegers = bigInteger.divideAndRemainder(bigInteger1);
System.out.println("商:" + bigIntegers[0] + "\t余数;" + bigIntegers[1]);
}
BigDecimal
public static void main(String[] args) {
BigDecimal bigDecimal = new BigDecimal("1212312312312456");
BigDecimal bigDecimal1 = new BigDecimal("434324324343243");
System.out.println(bigDecimal.add(bigDecimal1));
BigDecimal[] bigDecimals = bigDecimal.divideAndRemainder(bigDecimal1);
System.out.println("商:" + bigDecimals[0] + "\t余数;" + bigDecimals[1]);
}
public static void main(String[] args) {
System.out.println(round(19.6352, 2));
}
public static double round(double num, int s) {
return new BigDecimal(num).divide(new BigDecimal(1.0), s, RoundingMode.UP).doubleValue();
}
Math类 的处理 使用的都是基本数据类型,所以性能一定高于大数值处理类。
一般Math类,不会用到大数据类,理解就行