知乎专栏 |
java.util.Date, java.sql.Date, java.sql.Time, java.sql.Timestamp 区别
package cn.netkiller.java.date; /** * Hello world! * */ public class App { public static void main(String[] args) { System.out.println("Hello World!"); // Get standard date and time java.util.Date utilDate = new java.util.Date(); long javaTime = utilDate.getTime(); System.out.println("The Java Date is:" + utilDate.toString()); // Get and display SQL DATE java.sql.Date sqlDate = new java.sql.Date(javaTime); System.out.println("The SQL DATE is: " + sqlDate.toString()); // Get and display SQL TIME java.sql.Time sqlTime = new java.sql.Time(javaTime); System.out.println("The SQL TIME is: " + sqlTime.toString()); // Get and display SQL TIMESTAMP java.sql.Timestamp sqlTimestamp = new java.sql.Timestamp(javaTime); System.out.println("The SQL TIMESTAMP is: " + sqlTimestamp.toString()); } }
The Java Date is:Thu Aug 24 16:51:57 CST 2017 The SQL DATE is: 2017-08-24 The SQL TIME is: 16:51:57 The SQL TIMESTAMP is: 2017-08-24 16:51:57.234
import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; public class Main { public static void main(String[] args) { DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime dateTime = LocalDateTime.now(); String formattedDateTime = dateTime.format(formatter); System.out.println(formattedDateTime); } }
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("B"); System.out.println(dtf.format(LocalTime.of(8, 0))); System.out.println(dtf.format(LocalTime.of(13, 0))); System.out.println(dtf.format(LocalTime.of(20, 0))); System.out.println(dtf.format(LocalTime.of(23, 0))); System.out.println(dtf.format(LocalTime.of(0, 0)));
上午 下午 晚上 晚上 午夜
字符串转日期
try { DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); String str = "2018-12-11"; Date date = df.parse(str); System.out.println(date); } catch (Exception e) { e.printStackTrace(); }
public static void main(String[] args) { DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); //get current date time with Date() Date date = new Date(); System.out.println(dateFormat.format(date)); //get current date time with Calendar() Calendar cal = Calendar.getInstance(); System.out.println(dateFormat.format(cal.getTime())); }
不规范的 RFC3339 日期
String dt = "2021-08-26T09:17:23.859291804+08:00"; String rfc3339 = dt.replaceAll("\\.([0-9]+)", ""); System.out.println(dt); System.out.println(rfc3339); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX"); simpleDateFormat.setTimeZone(TimeZone.getTimeZone("GMT+8")); System.out.println(simpleDateFormat.parse(rfc3339).toLocaleString());
Timestamp timestamp = new Timestamp(System.currentTimeMillis()); Date date = new Date(); Timestamp timestamp = new Timestamp(date.getTime());
package cn.netkiller.example; import java.sql.Timestamp; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.TimeZone; public class TimeZoneTest { public TimeZoneTest() { // TODO Auto-generated constructor stub } public static void main(String[] args) { // TODO Auto-generated method stub SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); TimeZone timeZone = TimeZone.getTimeZone("Asia/Harbin"); Date date = new Date(); Timestamp timestamp = new Timestamp(date.getTime()); System.out.println(timestamp); timestamp.setHours(timestamp.getHours()+8); System.out.println(timestamp); simpleDateFormat.setTimeZone(TimeZone.getTimeZone("GMT")); System.out.println(simpleDateFormat.format(date)); simpleDateFormat.setTimeZone(TimeZone.getTimeZone("Asia/Harbin")); System.out.println(simpleDateFormat.format(date)); Calendar calendar = new GregorianCalendar(); calendar.setTime(date); calendar.setTimeZone(timeZone); System.out.println(simpleDateFormat.format(calendar.getTime())); } }
package cn.netkiller.example; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class StringToDate { public StringToDate() { // TODO Auto-generated constructor stub } public static void main(String[] args) { // TODO Auto-generated method stub SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String dateString = "2008-8-8 8:8:8"; try { Date date = formatter.parse(dateString); System.out.println(date); System.out.println(formatter.format(date)); } catch (ParseException e) { e.printStackTrace(); } } }
package cn.netkiller.example; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; public class DateCompare { public DateCompare() { // TODO Auto-generated constructor stub } public void fun1() throws InterruptedException { Date d1 = new Date(); Thread.sleep(5000); Date d2 = new Date(); if (d1.before(d2)) { System.out.println(String.format("%s < %s", d1.toString(), d2.toString())); } else { System.out.println(String.format("%s > %s", d1.toString(), d2.toString())); } if (d2.after(d1)) { System.out.println(String.format("%s > %s", d2.toString(), d1.toString())); } System.out.println(String.format("%s : %s => %d", d2.toString(), d1.toString(), d1.compareTo(d2))); System.out.println(String.format("%s : %s => %d", d1.toString(), d2.toString(), d2.compareTo(d1))); } public void fun2() throws InterruptedException { DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date1 = new Date(); Date date2 = new Date(); String s1 = dateFormat.format(date1); String s2 = dateFormat.format(date2); System.out.println(String.format("%s : %s => %d", s1, s2, s1.compareTo(s2))); date1 = new Date(); Thread.sleep(5000); date2 = new Date(); s1 = dateFormat.format(date1); s2 = dateFormat.format(date2); System.out.println(String.format("%s : %s => %d", s1, s2, s1.compareTo(s2))); System.out.println(String.format("%s : %s => %d", s2, s1, s2.compareTo(s1))); System.out.println(); } public void fun3() throws InterruptedException, ParseException { DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm"); //Date time = formatter.parse("2016-09-27 16:29"); Date time = formatter.parse("2016-08-09 09:15"); Date startDate = formatter.parse("2016-08-09 09:15"); Date endDate = formatter.parse("2016-09-27 16:30"); if (time.before(startDate) || time.after(endDate)) { System.out.println("Skip"); } } public static void main(String[] args) throws InterruptedException { // TODO Auto-generated method stub DateCompare dateCompare = new DateCompare(); dateCompare.fun1(); System.out.println(); dateCompare.fun2(); System.out.println(); dateCompare.fun3(); } }
Calendar cal = Calendar.getInstance(); int year = cal.get(Calendar.YEAR); int month = cal.get(Calendar.MONTH )+1; System.out.println(year + "年 " + month + "月");
public Date getToday(String time) { final Calendar cal = Calendar.getInstance(); DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd " + time); DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = null; try { date = fmt.parse(dateFormat.format(cal.getTime())); } catch (ParseException e) { e.printStackTrace(); } return date; } private Date addOneDay(Date date, int day) { Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.add(Calendar.DATE, day); return cal.getTime(); }
package cn.netkiller.date; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class Yesterday { public Yesterday() { // TODO Auto-generated constructor stub } public static void main(String[] args) { // TODO Auto-generated method stub Yesterday yesterday = new Yesterday(); System.out.println(yesterday.yesterday()); System.out.println(yesterday.getYesterday("00:00:00")); System.out.println(yesterday.getYesterday("23:59:59")); } private Date yesterday() { final Calendar cal = Calendar.getInstance(); cal.add(Calendar.DATE, -1); return cal.getTime(); } private Date getYesterday(String time) { DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd "+time); DateFormat fmt =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = null; try { date = fmt.parse(dateFormat.format(yesterday())); } catch (ParseException e) { e.printStackTrace(); } return date; } }
LocalDateTime localDateTime = LocalDateTime.of(2016, 1, 1, 13, 55); ZonedDateTime zonedDateTime = localDateTime.atZone(ZoneId.of("Asia/Shanghai")); Date date = Date.from(zonedDateTime.toInstant()); Instant instant = Instant.ofEpochMilli(date.getTime()); LocalDateTime ldt = LocalDateTime.ofInstant(instant, ZoneOffset.UTC); Instant instant = ldt.toInstant(ZoneOffset.UTC); Date date = Date.from(instant);