image.png

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); } }

  1. <a name="MP50i"></a>
  2. # 2、Java中两个Date类的使用
  3. ```java
  4. import org.junit.Test;
  5. import java.util.Date;
  6. /**
  7. * JDK 8之前日期和时间的API测试
  8. */
  9. public class DateTimeTest {
  10. /**
  11. * java.util.Date类 ---> 表示特定的瞬间,精确到毫秒
  12. * |---java.sql.Date类
  13. *
  14. * 1.两个构造器的使用
  15. * >构造器一:Date():创建一个对应当前时间的Date对象
  16. * >构造器二:创建指定毫秒数的Date对象
  17. * 2.两个方法的使用
  18. * >toString():显示当前的年、月、日、时、分、秒
  19. * >getTime():获取当前Date对象对应的毫秒数。(时间戳)
  20. *
  21. * 3. java.sql.Date对应着数据库中的日期类型的变量
  22. * >如何实例化
  23. * >如何将java.util.Date对象转换为java.sql.Date对象
  24. *
  25. */
  26. @Test
  27. public void test2(){
  28. //构造器一:Date():创建一个对应当前时间的Date对象
  29. Date date1 = new Date();
  30. System.out.println(date1.toString()); //Sat May 09 20:09:11 CST 2020
  31. System.out.println(date1.getTime()); //1589026216998
  32. //构造器二:创建指定毫秒数的Date对象
  33. Date date2 = new Date(1589026216998L);
  34. System.out.println(date2.toString());
  35. //创建java.sql.Date对象
  36. java.sql.Date date3 = new java.sql.Date(35235325345L);
  37. System.out.println(date3); //1971-02-13
  38. //如何将java.util.Date对象转换为java.sql.Date对象
  39. //情况一:
  40. // Date date4 = new java.sql.Date(2343243242323L);
  41. // java.sql.Date date5 = (java.sql.Date) date4;
  42. //情况二:
  43. //将util下的Date()装换成 sql下的Date()
  44. Date date6 = new Date();
  45. java.sql.Date date7 = new java.sql.Date(date6.getTime());
  46. }
  47. }

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 } }

  1. <a name="uf5ER"></a>
  2. ## 3.1、SimpleDateFormat的练习
  3. ```java
  4. import org.junit.Test;
  5. import java.text.ParseException;
  6. import java.text.SimpleDateFormat;
  7. import java.util.Date;
  8. /**
  9. * jdk 8 之前的日期时间的API测试
  10. * 1.System类中currentTimeMillis();
  11. * 2.java.util.Date和字类java.sql.Date
  12. * 3.SimpleDateFormat
  13. * 4.Calendar
  14. */
  15. public class DateTime {
  16. /**
  17. * 练习1:字符串"2020-09-08"转换为java.sql.Date
  18. *
  19. */
  20. @Test
  21. public void testExer() throws ParseException {
  22. String birth = "2020-09-08";
  23. SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
  24. Date date = sdf1.parse(birth);
  25. // System.out.println(date);
  26. java.sql.Date birthDate = new java.sql.Date(date.getTime());
  27. System.out.println(birthDate);
  28. }
  29. }
  1. /**
  2. * 练习二:"三天打渔两天晒网" 1990-01-01 xxxx-xx-xx 打渔?晒网?
  3. *
  4. * 举例:2020-09-08 ? 总天数
  5. *
  6. * 总天数 % 5 == 1,2,3 : 打渔
  7. * 总天数 % 5 == 4,0 : 晒网
  8. *
  9. * 总天数的计算?
  10. * 方式一:( date2.getTime() - date1.getTime()) / (1000 * 60 * 60 * 24) + 1
  11. * 方式二:1990-01-01 --> 2019-12-31 + 2020-01-01 -->2020-09-08
  12. *
  13. */

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

  1. //2.常用方法
  2. //get()
  3. int days = calendar.get(Calendar.DAY_OF_MONTH);
  4. System.out.println(days); //10
  5. System.out.println(calendar.get(Calendar.DAY_OF_YEAR)); //131,今天是这一年的131天
  6. //set()
  7. //calendar可变性
  8. calendar.set(Calendar.DAY_OF_MONTH,22);
  9. days = calendar.get(Calendar.DAY_OF_MONTH);
  10. System.out.println(days); //22
  11. //add()
  12. calendar.add(Calendar.DAY_OF_MONTH,-3);
  13. days = calendar.get(Calendar.DAY_OF_MONTH);
  14. System.out.println(days); //22-3 --》19
  15. //getTime():日历类---> Date
  16. Date date = calendar.getTime();
  17. System.out.println(date); //Tue May 19 17:12:06 CST 2020
  18. //setTime():Date ---> 日历类
  19. Date date1 = new Date();
  20. calendar.setTime(date1);
  21. days = calendar.get(Calendar.DAY_OF_MONTH);
  22. System.out.println(days); //10
  23. }

}

```