java 日期calendar_java成神之——date和calendar日期的用法
Date和Calendar日期的用法
Date類
System.currentTimeMillis() // 當前時間毫秒數(shù)
Date time = new Date();
time.getTime() // 當前毫秒值
time.setTime(100000000) // 根據(jù)毫秒值設(shè)置日期
java_util_Date和java_sql_Date的區(qū)別
java.util.Date類型的數(shù)據(jù)存到數(shù)據(jù)庫需要轉(zhuǎn)換成java.sql.Date
java.util.Date utilData = new java.util.Date();
java.sql.Date sqlData = new java.sql.Date(utilData.getTime());
SimpleDateFormat格式化時間
日期轉(zhuǎn)字符串
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd hh:mm.ss");
String formattedDate = simpleDateFormat.format(Calendar.getInstance().getTime()); // 2018/09/20 04:40.03
字符串轉(zhuǎn)日期
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd hh:mm.ss");
Date date = simpleDateFormat.parse("2018/09/20 04:40.03");
DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.SHORT, Locale.CHINA);
Date date = dateFormat.parse("2018/09/20");
DateFormat的幾個屬性
SHORT 6/30/09 30/06/09
MEDIUM Jun 30, 2009 30 juin 2009
LONG June 30, 2009 30 juin 2009
FULL Tuesday, June 30, 2009 mardi 30 juin 2009
LocalDate
LocalDate用來獲取系統(tǒng)默認時間
LocalDate lDate = LocalDate.now(); // 2018-09-20 不包含時間信息
LocalDate lDate = LocalDate.of(2018, 9, 10);
LocalDate lDate = LocalDate.parse("2018-09-11");
LocalDate lDate = LocalDate.now(ZoneId.systemDefault()); // 根據(jù)系統(tǒng)默認時區(qū)獲取時間
簡單日期操作
LocalDate.now() // 2018-09-20
LocalDate.now().minusDays(1) // 2018-09-19
LocalDate.now().plusDays(1); // 2018-09-21
LocalDate.now().withMonth(6) // 2018-06-20
LocalDateTime
LocalDateTime的參數(shù)含義
LocalDateTime.of(year, month, dayOfMonth, hour, minute, second, nanoOfSecond);
LocalDateTime的使用
LocalDateTime lDateTime = LocalDateTime.now(); // 2018-09-20T16:17:54.248780300
LocalDateTime lDateTime = LocalDateTime.of(2018, 9, 10, 10, 30);
LocalDateTime lDateTime = LocalDateTime.parse("2018-09-10T10:30");
LocalDateTime lDateTime = LocalDateTime.now(ZoneId.systemDefault());
Date和LocalDate的相互轉(zhuǎn)化
Date轉(zhuǎn)換成LocalDate
Date date = Date.from(Instant.now());
LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
LocalDate轉(zhuǎn)換成Date
LocalDate lDate = LocalDate.now();
Date date = Date.from(lDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
Date和LocalDateTime的相互轉(zhuǎn)化
Date轉(zhuǎn)換成LocalDateTime
Date date = Date.from(Instant.now());
LocalDateTime localDateTime = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
LocalDateTime轉(zhuǎn)換成Date
LocalDateTime lDateTime = LocalDateTime.now();
Date date = Date.from(lDateTime.atZone(ZoneId.systemDefault()).toInstant());
Calendar
用來獲取日期的具體部分
Calendar cd = Calendar.getInstance();
int time = cd.get(Calendar.YEAR); // 獲取年份
int time = cd.get(Calendar.MONTH) 1; // 月份從0開始,獲取月份
int time = cd.get(Calendar.DAY_OF_MONTH); // 獲取天
用來設(shè)置日期的具體部分
Calendar cd = Calendar.getInstance();
cd.set(Calendar.MONTH, 8); // 設(shè)置月份為9月
cd.set(1974, 6, 2, 8, 0, 0);
cd.add(Calendar.DAY_OF_MONTH, 2); // 時間偏移
Date time = cd.getTime(); // 將Calendar轉(zhuǎn)化成Date類
GregorianCalendar
Calendar calendar = Calendar.getInstance();
Calendar calendar = new GregorianCalendar();
Calendar calendar = new GregorianCalendar(2016, Calendar.JANUARY, 1);
Calendar calendar = new GregorianCalendar(2016, Calendar.JANUARY, 1, 6, 55, 10);
calendar.add(Calendar.MONTH, -6); // 改變?nèi)掌?/p>
calendar.roll(Calendar.MONTH, -1); // 改變?nèi)掌诘哪骋徊糠?#xff0c;其他字段不變
calendar.get(Calendar.AM_PM) // 獲取某一日期部分
before_after_compareTo_equals
用來判斷時間超前還是落后
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd hh:mm.ss");
Date date = simpleDateFormat.parse("2018/09/20 04:40.03");
Date date1 = simpleDateFormat.parse("2018/09/21 04:40.03");
date.after(date1) // false
date.before(date1) // true
用來判斷時間是否相等
date.compareTo(date1) // -1 返回的是日期對比的order,返回0表示相等、-1表示小、1表示大
date.equals(date1) // false
清空MILLISECOND
clear方法最好只用來清空MILLISECOND,其他的日期部分可能沒作用
Calendar c = Calendar.getInstance();
System.out.println(c.getTimeInMillis()); // 1537442289490
c.set(Calendar.MILLISECOND, 22);
System.out.println(c.getTimeInMillis()); // 1537442289022
c.clear(Calendar.MILLISECOND);
System.out.println(c.getTimeInMillis()); // 1537442289000
isBefore_isAfter_compareTo_equals
LocalDate lDate1 = LocalDate.of(2018, 9, 20);
LocalDate lDate2 = LocalDate.of(2012, 9, 19);
lDate1.isAfter(lDate2); //true
lDate1.isBefore(lDate2); //false
lDate1.compareTo(lDate2); // -1 返回的是日期對比的order,返回0表示相等、-1表示小、1表示大
lDate1.equals(lDate2); // false
lDate1.isEqual(lDate2); // false
時區(qū)
TimeZone.getDefault().getDisplayName(); // 中國標準時間
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sdf.setTimeZone(TimeZone.getTimeZone("China/Shang_Hai"));
System.out.println(sdf.format(date)); // 2018-09-20 11:44:22
sdf.setTimeZone(TimeZone.getTimeZone("Europe/London"));
System.out.println(sdf.format(date)); // 2018-09-20 12:44:22
時間差值
LocalDate d1 = LocalDate.of(2018, 9, 10).plusDays(1);
LocalDate d2 = LocalDate.of(2018, 9, 16).plusMonths(1);
long days = ChronoUnit.DAYS.between(d1, d2); // 35
Instant
Instant now = Instant.now(); // 2018-09-20T11:55:12.234452700Z
LocalTime
LocalTime localtime = LocalTime.now(); // 20:03:57.909365400
LocalTime time1 = LocalTime.of(1, 0, 0);
LocalTime time2 = LocalTime.of(3, 1, 10);
time1和time2差值
System.out.println( time1.until(time2, ChronoUnit.MINUTES) ); // 121
System.out.println( time1.until(time2, ChronoUnit.HOURS) ); // 2
System.out.println( time1.until(time2, ChronoUnit.SECONDS) ); // 7270
System.out.println( ChronoUnit.MINUTES.between(time1, time2) ); // 121
System.out.println( ChronoUnit.HOURS.between(time1, time2) ); // 2
System.out.println( ChronoUnit.SECONDS.between(time1, time2) ); // 7270
時區(qū)
ZoneId zone = ZoneId.of("Asia/Shanghai");
LocalTime time1 = LocalTime.now();
LocalTime time2 = LocalTime.now(zone);
LocalTime time3 = LocalTime.parse("20:10:30");
時間差
long timeDiff = Duration.between(time1, time3).toMinutes();
long timeDiff1 = ChronoUnit.MINUTES.between(time1, time3);
System.out.println(time1); // 20:13:38.239060900
System.out.println(time2); // 20:13:38.239060900
System.out.println(time3); // 20:10:30
System.out.println(timeDiff); // -3
System.out.println(timeDiff1); // -3
結(jié)語
本文章是java成神的系列文章之一
如果你想知道,但是本文沒有的,請下方留言
我會第一時間總結(jié)出來并發(fā)布填充到本文
來源:http://www.icode9.com/content-1-29301.html
總結(jié)
以上是生活随笔為你收集整理的java 日期calendar_java成神之——date和calendar日期的用法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ios 图标字体
- 下一篇: 486微型计算机的字长是 8位 16位