日期和时间

cnblogs 2024-09-12 16:39:00 阅读 55

日期时间的获取、格式化、解析。

    <li>

    日期和时间继承关系图

    li>
  • 获取时间戳(当前时间毫秒值)

    li>

util.Date


sql.Date

    <li>java.sql.Date对应的是数据库中日期类型的变量


SimpleDateFormat类

    <li>format( ):日期 转 字符串
  • parse( ): 字符串 转 日期

日期 转 字符串

字符串 转 日期

字符串 转sql.Date

    <li>需要先将 字符串 转换成 uitli.date
  • 再将uitli.date 转成 sql.date


Calendar日历类

    <li>Calendar是一个抽象类,使用Calendar.getInstance( )方法获取对象
  • 获取月份时:一月是0,二月是1,以此类推,12月是11
  • 获取星期时:周日是1,周二是2 ,周六是7


java.time

    <li>LocalDate类: 本地日期
  • LocalTime类: 本地时间
  • LocalDateTime类:本地日期和时间

LocalDate类、LocalTime类、LocalDateTime类


Instant类

    <li>时间线上的一个瞬时点。表示自1970年1月1日0时0分0秒(UTC)开始的秒数。


DateTimeFormatter类

    <li>格式化日期时间 和 解析日期时间

<code>public static void main(String[] args) {

//获取本地日期时间

LocalDateTime localDateTime = LocalDateTime.now();// 2024-09-12T14:40:40.161

//获取DateTimeFormatter对象,并且自定义日期时间的格式

DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");

//格式化:日期 --> 字符串

String timeStr = dateTimeFormatter.format(localDateTime);// 2024-09-12 02:43:34

//解析:字符串 --> 日期

//TemporalAccessor parse = dateTimeFormatter.parse("2020-09-10 10:10:50");

timeStr = "2020-09-10 10:10:50";

DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

LocalDateTime localDateTime02 = LocalDateTime.parse(timeStr, formatter2);

System.out.println(localDateTime02);// 2020-09-10T10:10:50

}


应用实例

  • 三天打鱼两天晒网。判断在指定日期是在打渔,还是在晒网。从1990-01-01开始。

/**

* 思路分析:

* 第一步:计算出1990-01-01到指定日期,一共多少天

* 第二步:总天数%5,余数是1、2、3表示打鱼。4、0晒网

*/

public static void main(String[] args) throws ParseException {

//开始时间转换成毫秒值

String timeStr = "1990-01-01";

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");

Date date = simpleDateFormat.parse(timeStr);

long startTime = date.getTime();

//结束时间转换成毫秒值

String endTimeStr="2020-09-21";code>

Date endDate = simpleDateFormat.parse(endTimeStr);

//long endTime = new Date().getTime();

long endTime = endDate.getTime();

int swapTempTime=1000*60*60*24;

double allDays=(endTime-startTime)/swapTempTime;//获取总天数

//判断是否是一个小数。如果是小数 总天数+1

String str = allDays + "";

String[] split = str.split("\\.");

if (!"0".equals(split[1])) {

System.out.println(allDays+" 是一个小数");

//总天数+1

allDays += 1;

}

//总天数对5取模。1、2、3打渔,0、4晒网

int result=(int)allDays%5;

switch (result){

case 1:

case 2:

case 3:

System.out.println("正在打渔.....");

break;

case 0:

case 4:

System.out.println("今天休息。晒网");

break;

default:

System.out.println("出错了!");

}

}




声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。