1、System类中获取时间戳的方法
System类提供的public static long currentTimeMillis()用来返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。
- 此方法适于计算时间差。
计算世界时间的主要标准有:
- UTC(Coordinated Universal Time)
- GMT(Greenwich Mean Time)
CST(Central Standard Time) ```java import org.junit.Test; /**
- JDK 8之前日期和时间的API测试 */ public class DateTimeTest {
//1.System类中的currentTimeMillis() @Test public void test1(){ long time = System.currentTimeMillis(); //返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。 //称为时间戳 System.out.println(time); } }
<a name="MP50i"></a># 2、Java中两个Date类的使用```javaimport org.junit.Test;import java.util.Date;/*** JDK 8之前日期和时间的API测试*/public class DateTimeTest {/*** java.util.Date类 ---> 表示特定的瞬间,精确到毫秒* |---java.sql.Date类** 1.两个构造器的使用* >构造器一:Date():创建一个对应当前时间的Date对象* >构造器二:创建指定毫秒数的Date对象* 2.两个方法的使用* >toString():显示当前的年、月、日、时、分、秒* >getTime():获取当前Date对象对应的毫秒数。(时间戳)** 3. java.sql.Date对应着数据库中的日期类型的变量* >如何实例化* >如何将java.util.Date对象转换为java.sql.Date对象**/@Testpublic void test2(){//构造器一:Date():创建一个对应当前时间的Date对象Date date1 = new Date();System.out.println(date1.toString()); //Sat May 09 20:09:11 CST 2020System.out.println(date1.getTime()); //1589026216998//构造器二:创建指定毫秒数的Date对象Date date2 = new Date(1589026216998L);System.out.println(date2.toString());//创建java.sql.Date对象java.sql.Date date3 = new java.sql.Date(35235325345L);System.out.println(date3); //1971-02-13//如何将java.util.Date对象转换为java.sql.Date对象//情况一:// Date date4 = new java.sql.Date(2343243242323L);// java.sql.Date date5 = (java.sql.Date) date4;//情况二://将util下的Date()装换成 sql下的Date()Date date6 = new Date();java.sql.Date date7 = new java.sql.Date(date6.getTime());}}
3、SimpleDateFormat的使用
- Date类的API不易于国际化,大部分被废弃了,java.text.SimpleDateFormat类是一个不与语言环境有关的方式来格式化和解析日期的具体类。
- 它允许进行
- 格式化:日期—>文本
- 解析:文本—>日期 ```java import org.junit.Test;
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date;
/**
- jdk 8 之前的日期时间的API测试
- 1.System类中currentTimeMillis();
- 2.java.util.Date和字类java.sql.Date
- 3.SimpleDateFormat
4.Calendar / public class DateTime { /*
- SimpleDateFormat的使用:SimpleDateFormat对日期Date类的格式化和解析
- 1.两个操作
- 1.1格式化:日期—-》字符串
- 1.2解析:格式化的逆过程,字符串—-》日期 *
2.SimpleDateFormat的实例化 */ @Test public void testSimpleDateFormat() throws ParseException { //实例化SimpleDateFormat SimpleDateFormat sdf = new SimpleDateFormat();
//格式化:日期—-》字符串 Date date = new Date(); System.out.println(date); //Sun May 10 16:34:30 CST 2020
String format = sdf.format(date); System.out.println(format); //20-5-10 下午4:34
//解析:格式化的逆过程,字符串—-》日期 String str = “19-12-18 上午11:43”; Date date1 = sdf.parse(str); System.out.println(date1); //Wed Dec 18 11:43:00 CST 2019
//*按照指定的方式格式化和解析:调用带参的构造器* // SimpleDateFormat sdf1 = new SimpleDateFormat(“yyyyy.MMMMM.dd GGG hh:mm aaa”); SimpleDateFormat sdf1 = new SimpleDateFormat(“yyyyy.MMMMM.dd GGG hh:mm aaa”); //格式化 String format1 = sdf1.format(date); System.out.println(format1); //02020.五月.10 公元 04:32 下午 //解析:要求字符串必须是符合SimpleDateFormat识别的格式(通过构造器参数体现), //否则,抛异常 Date date2 = sdf1.parse(“02020.五月.10 公元 04:32 下午”); System.out.println(date2); //Sun May 10 16:32:00 CST 2020 } }
<a name="uf5ER"></a>## 3.1、SimpleDateFormat的练习```javaimport org.junit.Test;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;/*** jdk 8 之前的日期时间的API测试* 1.System类中currentTimeMillis();* 2.java.util.Date和字类java.sql.Date* 3.SimpleDateFormat* 4.Calendar*/public class DateTime {/*** 练习1:字符串"2020-09-08"转换为java.sql.Date**/@Testpublic void testExer() throws ParseException {String birth = "2020-09-08";SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");Date date = sdf1.parse(birth);// System.out.println(date);java.sql.Date birthDate = new java.sql.Date(date.getTime());System.out.println(birthDate);}}
/*** 练习二:"三天打渔两天晒网" 1990-01-01 xxxx-xx-xx 打渔?晒网?** 举例:2020-09-08 ? 总天数** 总天数 % 5 == 1,2,3 : 打渔* 总天数 % 5 == 4,0 : 晒网** 总天数的计算?* 方式一:( date2.getTime() - date1.getTime()) / (1000 * 60 * 60 * 24) + 1* 方式二:1990-01-01 --> 2019-12-31 + 2020-01-01 -->2020-09-08**/
4、Calendar日历类的使用
- Calendar是一个抽象基类,主用用于完成日期字段之间相互操作的功能。
- 获取Calendar实例的方法
- 使用Calendar.getInstance()方法
- 调用它的子类GregorianCalendar的构造器。
- 一个Calendar的实例是系统时间的抽象表示,通过get(intfield)方法来取得想要的时间信息。比如YEAR、MONTH、DAY_OF_WEEK、HOUR_OF_DAY 、MINUTE、SECOND
- public void set(intfield,intvalue)
- public void add(intfield,intamount)
- public final Date getTime()
- public final void setTime(Date date)
- 注意:
- 获取月份时:一月是0,二月是1,以此类推,12月是11
- 获取星期时:周日是1,周二是2,。。。。周六是7 ```java import java.util.Calendar; import java.util.Date;
import org.junit.Test;
/**
- jdk 8 之前的日期时间的API测试
- 1.System类中currentTimeMillis();
- 2.java.util.Date和字类java.sql.Date
- 3.SimpleDateFormat
4.Calendar */ public class DateTime {
/**
- Calendar日历类的使用 */ @Test public void testCalendar(){ //1.实例化 //方式一:创建其子类(GregorianCalendar)的对象 //方式二:调用其静态方法getInstance() Calendar calendar = Calendar.getInstance();
// System.out.println(calendar.getClass()); //class java.util.GregorianCalendar
//2.常用方法//get()int days = calendar.get(Calendar.DAY_OF_MONTH);System.out.println(days); //10System.out.println(calendar.get(Calendar.DAY_OF_YEAR)); //131,今天是这一年的131天//set()//calendar可变性calendar.set(Calendar.DAY_OF_MONTH,22);days = calendar.get(Calendar.DAY_OF_MONTH);System.out.println(days); //22//add()calendar.add(Calendar.DAY_OF_MONTH,-3);days = calendar.get(Calendar.DAY_OF_MONTH);System.out.println(days); //22-3 --》19//getTime():日历类---> DateDate date = calendar.getTime();System.out.println(date); //Tue May 19 17:12:06 CST 2020//setTime():Date ---> 日历类Date date1 = new Date();calendar.setTime(date1);days = calendar.get(Calendar.DAY_OF_MONTH);System.out.println(days); //10}
}
```
