Java基础快速入门: 时间和日期处理全解析

Java基础之日期时间 阅读详情

本文纲要

  1. 世界标准时间与计算机时间原点
  2. Date 类
    构造方法
    成员方法 getTime() 和 setTime()
  3. SimpleDateFormat 格式化和解析
    格式化:将 Date 转换为字符串
    解析:将字符串转换为 Date
    综合练习:秒杀资格判断(含流程图)
  4. JDK8 新时间类
    为什么需要 JDK8 时间类
    体验 JDK8 的简洁
  5. LocalDateTime 获取时间对象
  6. LocalDateTime 获取时间中的每个值
  7. LocalDateTime 转换方法
  8. LocalDateTime 格式化与解析
  9. plus 系列方法:添加或减少时间
  10. minus 系列方法:减少或增加时间
  11. with 系列方法:修改时间
  12. 时间间隔对象 Period 和 Duration
  13. JDK8 时间类小结

世界标准时间与计算机时间原点

在深入学习 Java 时间 API 之前,有必要了解几个背景知识。

  • 世界标准时间:格林威治标准时间(Greenwich Mean Time,GMT),由英国伦敦格林威治天文台提供,现已被更精确的原子钟替代(误差每两千万年仅一秒)。我国采用北京时间,位于东八区,需在标准时间上加 8 小时。

  • 时间单位换算:1 秒 = 1000 毫秒,1 毫秒 = 1000 微秒,1 微秒 = 1000 纳秒。其中“1 秒 = 1000 毫秒”使用最频繁。

  • 计算机时间原点:1970 年 1 月 1 日 00:00:00(Unix 纪元),这也是 C 语言的诞生时间,Java 继承了该传统。System.currentTimeMillis() 返回的正是从该原点至今的毫秒数。

Date 类

Java 中 java.util.Date 类表示一个特定的时间,精确到毫秒。本节演示代码位于 com.wb.mydate 包下,项目结构如下:

src 
└── com 
    └── wb 
        ├── mydate 
        │   ├── DateDemo1.java 
        │   ├── DateDemo2.java 
        │   ├── DateDemo3.java 
        │   ├── DateDemo4.java 
        │   └── DateDemo5.java 
        └── jdk8date 
            ├── JDK8DateDemo1.java 
            ├── JDK8DateDemo2.java 
            ...
            └── JDK8DateDemo10.java

1 ) 构造方法

Date 提供两个常用构造:

  • Date():空参构造,封装当前系统时间。
  • Date(long date):带参构造,从时间原点经过指定毫秒后的时间(注意东八区需 +8 小时)。

示例

// DateDemo1.java 
package com.wb.mydate;
 
import java.util.Date;
 
public class DateDemo1 {
    public static void main(String[] args) {
        // 空参构造:表示当前时间 
        Date date1 = new Date();
        System.out.println(date1);
 
        // 带参构造:从时间原点经过 0 毫秒 → 1970-01-01 08:00:00 (东八区)
        Date date2 = new Date(0L);
        System.out.println(date2);
 
        // 表示 1970年1月1日 上午9点(1小时 = 3600秒 × 1000 毫秒)
        Date date3 = new Date(3600L * 1000);
        System.out.println(date3);
    }
}

要点:

  • 空参构造获得当前时间。
  • 带参构造传入毫秒值,基准是 1970-01-01 08:00:00(北京时间)。

2 ) 成员方法 getTime() 和 setTime()

  • getTime():返回该 Date 对象对应的毫秒值(从时间原点开始的毫秒数)。
  • setTime(long time):设置 Date 对象的时间(传入毫秒值)。

示例

// DateDemo2.java 
package com.wb.mydate;
 
import java.util.Date;
 
public class DateDemo2 {
    public static void main(String[] args) {
        // method1();  // 获取毫秒值 
        // method2();  // 设置时间 
    }
 
    // 演示 getTime()
    private static void method1() {
        Date date1 = new Date();                       // 当前时间 
        long time = date1.getTime();                   // 获取毫秒值 
        System.out.println(time);
 
        long time2 = System.currentTimeMillis();       // 与系统方法对比 
        System.out.println(time2);
    }
 
    // 演示 setTime()
    private static void method2() {
        Date date1 = new Date();                       // 当前时间 
        date1.setTime(0L);                             // 设置为时间原点 
        System.out.println(date1);
    }
}

SimpleDateFormat 格式化和解析

SimpleDateFormat 位于 java.text 包,用于将 Date 对象与字符串相互转换,自定义时间显示格式。

常用模式字母:

字母含义
y年
M月
d日
H时(0-23)
m分
s秒

1 ) 格式化:将 Date 转换为字符串

// DateDemo3.java 
package com.wb.mydate;
 
import java.text.SimpleDateFormat;
import java.util.Date;
 
public class DateDemo3 {
    public static void main(String[] args) {
        Date date = new Date();                               // 当前时间 
 
        // 创建格式对象,指定输出样式 
        // SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        // SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
 
        String result = sdf.format(date);                     // 格式化 
        System.out.println(result);
    }
}

格式字符串中的字母必须严格使用上表,其他字符原样输出。

2 ) 解析:将字符串转换为 Date

// DateDemo4.java 
package com.wb.mydate;
 
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
 
public class DateDemo4 {
    public static void main(String[] args) throws ParseException {
        String s = "2048-01-01";
 
        // 解析时格式必须与字符串格式完全一致 
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
 
        Date date = sdf.parse(s);                             // 解析成 Date 
        System.out.println(date);
    }
}

解析时若格式不匹配会抛出 ParseException。

3 ) 综合练习:秒杀资格判断

秒杀活动:开始时间 2020 年 11 月 11 日 0:0:0,结束时间同一天 0:10:0。
小贾下单时间:0:03:47,小皮下单时间:0:10:11。判断谁成功参与。

解题思路:将时间字符串转换为毫秒值进行比较。

是

否

开始

将开始、结束、下单时间字符串用 SimpleDateFormat 解析为 Date

通过 getTime 获得毫秒值

下单时间 >= 开始 且 <= 结束?

参加成功

未参加

// DateDemo5.java 
package com.wb.mydate;
 
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
 
public class DateDemo5 {
    public static void main(String[] args) throws ParseException {
        String start = "2020年11月11日 0:0:0";
        String end   = "2020年11月11日 0:10:0";
        String jia   = "2020年11月11日 0:03:47";
        String pi    = "2020年11月11日 0:10:11";
 
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
 
        // 所有时间转为毫秒值 
        long startTime = sdf.parse(start).getTime();
        long endTime   = sdf.parse(end).getTime();
        long jiaTime   = sdf.parse(jia).getTime();
        long piTime    = sdf.parse(pi).getTime();
 
        // 判断小贾 
        if (jiaTime >= startTime && jiaTime <= endTime) {
            System.out.println("小贾同学参加上了秒杀活动");
        } else {
            System.out.println("小贾同学没有参加上秒杀活动");
        }
 
        System.out.println("------------------------");
 
        // 判断小皮 
        if (piTime >= startTime && piTime <= endTime) {
            System.out.println("小皮同学参加上了秒杀活动");
        } else {
            System.out.println("小皮同学没有参加上秒杀活动");
        }
    }
}

输出结果:小贾参加成功,小皮失败(10:11 超出了结束时间)。

JDK8 新时间类

JDK7 之前用 Date + SimpleDateFormat 进行时间计算时需要反复转换(字符串 → Date → 毫秒 → 加/减 → Date → 字符串),代码繁琐易错。JDK8 引入了全新的时间 API,代码更简洁、语义更清晰。

体验 JDK8 的简洁

需求:将 2020年11月11日 00:00:00 加 1 天。

JDK7 方式:

// JDK8DateDemo1.java (部分)
private static void JDKMethod() throws ParseException {
    String s = "2020年11月11日 00:00:00";
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
    Date date = sdf.parse(s);
    long time = date.getTime();
    time = time + (1000 * 60 * 60 * 24);       // 加一天的毫秒 
    Date newDate = new Date(time);
    String result = sdf.format(newDate);
    System.out.println(result);
}

JDK8 方式:

// JDK8DateDemo1.java 
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
 
public class JDK8DateDemo1 {
    public static void main(String[] args) {
        String s = "2020年11月11日 00:00:00";
 
        DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
        LocalDateTime localDateTime = LocalDateTime.parse(s, pattern);
        LocalDateTime newLocalDateTime = localDateTime.plusDays(1);   // 直接加1天 
        String result = newLocalDateTime.format(pattern);
        System.out.println(result);
    }
}

对比可见,JDK8 API 省去了毫秒值的中间计算,代码更直观

LocalDateTime 获取时间对象

JDK8 将时间细化为三个类:

  • LocalDate:只包含年、月、日。
  • LocalTime:只包含时、分、秒。
  • LocalDateTime:包含年、月、日、时、分、秒。

常用创建方法:

  • now():静态方法,获取当前系统时间。
  • of(int year, int month, int day, int hour, int minute, int second):指定时间。
// JDK8DateDemo2.java 
package com.wb.jdk8date;
 
import java.time.LocalDateTime;
 
public class JDK8DateDemo2 {
    public static void main(String[] args) {
        // 当前时间 
        LocalDateTime now = LocalDateTime.now();
        System.out.println(now);
 
        // 指定时间:2020年11月11日 11:11:11 
        LocalDateTime localDateTime = LocalDateTime.of(2020, 11, 11, 11, 11, 11);
        System.out.println(localDateTime);
    }
}

of 方法的参数有范围限制(如月份 1-12),超出会抛出异常。

LocalDateTime 获取时间中的每个值

LocalDateTime 提供了丰富的 get 方法,直接获取各个字段,返回 int 类型:

// JDK8DateDemo3.java 
package com.wb.jdk8date;
 
import java.time.LocalDateTime;
 
public class JDK8DateDemo3 {
    public static void main(String[] args) {
        LocalDateTime localDateTime = LocalDateTime.of(2020, 11, 11, 11, 11, 20);
 
        int year = localDateTime.getYear();                    // 年 
        int month = localDateTime.getMonthValue();             // 月 (1-12)
        int day = localDateTime.getDayOfMonth();               // 日 (1-31)
        int dayOfYear = localDateTime.getDayOfYear();          // 一年中的第几天 
        int minute = localDateTime.getMinute();                // 分钟 
        int hour = localDateTime.getHour();                    // 小时 
 
        System.out.println("年:" + year);
        System.out.println("月:" + month);
        System.out.println("日:" + day);
        System.out.println("一年中第 " + dayOfYear + " 天");
        System.out.println("小时:" + hour);
        System.out.println("分钟:" + minute);
    }
}

注意:getMonth() 返回的是枚举类型 Month(如 NOVEMBER),getDayOfWeek() 返回 DayOfWeek 枚举。一般获取数值时推荐使用 getMonthValue()、getDayOfMonth() 等。

LocalDateTime 转换方法

若只关心日期或只关心时间,可在 LocalDateTime 基础上转换:

  • toLocalDate() → 仅保留年、月、日。
  • toLocalTime() → 仅保留时、分、秒。
// JDK8DateDemo4.java 
package com.wb.jdk8date;
 
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
 
public class JDK8DateDemo4 {
    public static void main(String[] args) {
        LocalDateTime localDateTime = LocalDateTime.of(2020, 12, 12, 8, 10, 12);
 
        LocalDate localDate = localDateTime.toLocalDate();   // 2020-12-12 
        LocalTime localTime = localDateTime.toLocalTime();   // 08:10:12 
 
        System.out.println(localDate);
        System.out.println(localTime);
    }
}

LocalDateTime 格式化与解析

JDK8 使用 DateTimeFormatter 替代 SimpleDateFormat,用法类似。

  • 格式化:format() 方法。
  • 解析:静态方法 parse(字符串, 格式器)。
// JDK8DateDemo5.java 
package com.wb.jdk8date;
 
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
 
public class JDK8DateDemo5 {
    public static void main(String[] args) {
        // 格式化 
        LocalDateTime localDateTime = LocalDateTime.of(2020, 11, 12, 13, 14, 15);
        DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
        String s = localDateTime.format(pattern);
        System.out.println(s);
 
        // 解析 
        String str = "2020年11月12日 13:14:15";
        LocalDateTime parse = LocalDateTime.parse(str, pattern);
        System.out.println(parse);
    }
}

plus 系列方法:添加或减少时间

plusXxx() 方法返回一个新的 LocalDateTime 对象,参数为正数时向后添加,负数时向前减少

常用方法:plusYears(), plusMonths(), plusDays(), plusHours(), plusMinutes() 等

// JDK8DateDemo6.java 
package com.wb.jdk8date;
 
import java.time.LocalDateTime;
 
public class JDK8DateDemo6 {
    public static void main(String[] args) {
        LocalDateTime localDateTime = LocalDateTime.of(2020, 11, 11, 13, 14, 15);
 
        // 加 1 年 → 2021-11-11 13:14:15 
        LocalDateTime newLocalDateTime = localDateTime.plusYears(1);
        System.out.println(newLocalDateTime);
 
        // 加 -1 年 → 相当于减 1 年 → 2019-11-11 13:14:15 
        LocalDateTime newLocalDateTime2 = localDateTime.plusYears(-1);
        System.out.println(newLocalDateTime2);
    }
}

minus 系列方法:减少或增加时间

minusXxx() 方法与 plus 语义相反:正数向前减少,负数向后增加。

// JDK8DateDemo7.java
package com.wb.jdk8date;

import java.time.LocalDateTime;
 
/**
 * JDK8 时间类减少或者添加时间的方法
 */
public class JDK8DateDemo7 {
    public static void main(String[] args) {
        // public LocalDateTime minusYears(long years)  减去或者添加年
        LocalDateTime localDateTime = LocalDateTime.of(2020, 11, 11, 13, 14, 15);
 
        // 减 1 年 → 2019-11-11 13:14:15
        LocalDateTime newLocalDateTime1 = localDateTime.minusYears(1);
        System.out.println(newLocalDateTime1);
 
        // 减 -1 年 → 相当于加 1 年 → 2021-11-11 13:14:15
        LocalDateTime newLocalDateTime2 = localDateTime.minusYears(-1);
        System.out.println(newLocalDateTime2);
    }
}

日常开发中更推荐使用 plus 系列,语义更符合直觉

with 系列方法:修改时间

withXxx() 方法用于直接修改某个字段的值,返回新对象。注意参数必须在合法范围内(如月份 1-12),否则抛出异常。

// JDK8DateDemo8.java
package com.wb.jdk8date;
 
import java.time.LocalDateTime;
 
/**
 * JDK8 时间类修改时间 
 */
public class JDK8DateDemo8 {
    public static void main(String[] args) {
        // public LocalDateTime withYear(int year)   修改年
        LocalDateTime localDateTime = LocalDateTime.of(2020, 11, 11, 13, 14, 15);
 
        // 修改年份为 2048 → 2048-11-11 13:14:15
        LocalDateTime newLocalDateTime1 = localDateTime.withYear(2048);
        System.out.println(newLocalDateTime1);
 
        // 修改月份为 20(超出范围)→ 抛出 DateTimeException
        // LocalDateTime newLocalDateTime2 = localDateTime.withMonth(20);
        // System.out.println(newLocalDateTime2);
    }
}

时间间隔对象 Period 和 Duration

JDK8 提供两个类用于计算时间间隔:

  • Period:基于 LocalDate,计算两个日期之间的年、月、日。
    通过 Period.between(开始日期, 结束日期) 获取间隔对象,再调用 getYears()、getMonths()、getDays()、toTotalMonths() 等方法
  • Duration:基于包含时间的类(如 LocalDateTime、LocalTime),计算两个时间之间的秒、毫秒、纳秒。通过 Duration.between(开始时间, 结束时间) 获取间隔对象,再调用 toSeconds()、toMillis()、toNanos() 等方法。
// JDK8DateDemo9.java
package com.wb.jdk8date;
 
import java.time.LocalDate;
import java.time.Period;
 
/**
 * 计算两个日期的间隔(年、月、日)
 */
public class JDK8DateDemo9 {
    public static void main(String[] args) {
        LocalDate localDate1 = LocalDate.of(2020, 1, 1);
        LocalDate localDate2 = LocalDate.of(2048, 12, 12);
 
        Period period = Period.between(localDate1, localDate2);
        System.out.println(period);                    // P28Y11M11D 
 
        System.out.println("年数:" + period.getYears());       // 28 
        System.out.println("月数:" + period.getMonths());      // 11 
        System.out.println("天数:" + period.getDays());        // 11 
        System.out.println("总月数:" + period.toTotalMonths()); // 347 
    }
}
// JDK8DateDemo10.java
package com.wb.jdk8date;
 
import java.time.Duration;
import java.time.LocalDateTime;
 
/**
 * 计算两个时间的间隔(秒、毫秒、纳秒)
 */
public class JDK8DateDemo10 {
    public static void main(String[] args) {
        LocalDateTime localDateTime1 = LocalDateTime.of(2020, 1, 1, 13, 14, 15);
        LocalDateTime localDateTime2 = LocalDateTime.of(2020, 1, 2, 11, 12, 13);
 
        Duration duration = Duration.between(localDateTime1, localDateTime2);
        System.out.println(duration);                          // PT21H57M58S
 
        System.out.println("秒数:" + duration.toSeconds());    // 79078
        System.out.println("毫秒:" + duration.toMillis());     // 79078000
        System.out.println("纳秒:" + duration.toNanos());      // 79078000000000 
    }
}

JDK8 时间类小结

JDK8 新时间 API 的核心要点:

分类关键类/方法说明
日期时间类LocalDate / LocalTime / LocalDateTime分别表示日期、时间、日期+时间
创建对象now()、 of(...)当前时间 / 指定时间
获取字段getYear()、getMonthValue()、getDayOfMonth() 等获取年、月、日、时、分、秒
转换toLocalDate()、toLocalTime()从 LocalDateTime 提取日期或时间
格式化/解析DateTimeFormatter.ofPattern() + format() / parse()替代 SimpleDateFormat
时间加减plusXxx() / minusXxx()参数正数向前,负数向后
修改字段withXxx()直接修改某个字段,返回新对象
时间间隔Period.between() / Duration.between()计算日期间隔(年月日) / 时间间隔(秒毫秒纳秒)

所有方法均返回新对象,原对象不受影响,符合不可变设计。遇到遗忘的方法,可查阅 JDK API 文档,通过 LocalDateTime 等类名快速定位

从古老的 Date 到简洁的 JDK8 时间类,到现在已经掌握了 Java 时间处理的核心技能。多加练习,熟能生巧!

Java currentTimeMillis()方法介绍 返回从1970年1月1日午夜(UTC)开始到当前时间的毫秒值. 阅读详情

相关推荐

Hutool之DateUtil:让Java日期处理变得更加简单

Hutool 的 DateUtil 工具类是 Hutool 工具库中用于日期和时间处理的核心类之一,提供了许多静态方法,用于方便地处理常见的日期和时间操作。考虑到 Java 本身对日期时间的支持有限,并且 Date 和 Calendar 对象的并存导致各种方法使用混乱和复杂,故使用此工具类做了封装。这其中的封装主要是日期和字符串之间的转换,以及提供对日期的定位。通过学习 Hutool 工具库中的 DateUtil 工具类,我们可以方便地处理日期和时间相关的操作。

独泪了无痕 1912

LocalDateTime转时间毫秒值

LocalDateTime转时间毫秒值、可以先转为Timestamp或时间戳

m0_62576090的博客 1万+

Java中日期与时间处理报错的调试

Java中日期与时间处理报错是一个常见的问题,但通过了解常见报错原因和调试方法,开发者可以快速定位和解决问题。在处理日期与时间时,尽量使用java.time包中的类,它们提供了更清晰、更灵活、更安全的API。同时,结合日志记录、单元测试、调试器和在线工具等调试工具和技巧,可以进一步提高调试效率。希望本文介绍的调试方法能帮助开发者更好地处理Java中的日期与时间问题。

shejizuopin的博客 1411

java后台开发入门(springboot快速入门)

带领大家借助当下比较流行的springboot框架快速开发属于自己的java后台。即便你是编程小白,没有任何编程基础也可以学习本课程。知识点1,Java2,springboot3,freemarker4,bootstrap4.35,Javaweb6,微信小程序同时会借助当下最热门的微信小程序来作为我们的前端展示。所以课程中也会教给大家一部分小程序开发的知识。大家只需要跟着老师一步步学习,我们既可以学习到java知识,也可以学习到小程序开发和web开发相关的知识。我们学习过程中会有老师在线实时解答,每节课都会有对应的源码和配套笔记给到大家。

Java8日期处理【上】(超详细、JDK8)

以构造of方法创建出的Period对象,年月日之间不会自动完成转换,即不会有“进位”和“退位”效果。以构造方式创建出的Period对象,调用其toTotalMonths()不一定能够准确的计算出该对象所代表的时间段中包含的月数,因为计算过程中并没有考虑“日计数器”上的值。normalized()方法只能在年和月之间完成换算,并不能把天换算成月,即使天数已经超过了31。说明:造成以上三种情况的原因可以统一归结为:日与月之间没有确定的换算标准。

2301_78976656的博客 1037

Java LocalDateTime类详解:高效处理日期时间

LocalDateTime 是 Java 8 及更高版本中用于处理日期和时间的类,不包含时区信息。本文详细介绍了其常用方法,包括创建对象、获取日期时间部分、修改日期时间、比较日期时间、格式化以及时区转换。通过具体代码示例,帮助开发者快速掌握 LocalDateTime 的使用,提升日期时间操作的效率。

C_V_Better的博客 810

Java 日期时间处理全面解析

Java 日期时间处理是编程中常见的需求,尤其是在涉及数据记录、时间戳、日历事件等场景时。Java 提供了多种方式来处理日期和时间,包括传统的和类,以及 Java 8 引入的新的日期时间 APIjava.time。本文将全面解析 Java 日期时间处理的各种方法,并比较它们的优缺点。

lsx202406的博客 437

java零基础从入门到精通(全)

目录前言1. 入门知识1.1 java体系1.2 JDK/JRE/JVM区别1.3 编译与运行理解1.4 类体函数细节2. 标识符 前言 java优势 健壮性(JVM(C++语言写的一个虚拟的计算机)、GC(垃圾回收机制)) 多线程并发 可移植性/跨平台 1. 入门知识 1.1 java体系 JavaSE:标准版 JavaEE:企业版 JavaME:微型版 1.2 JDK/JRE/JVM区别 JVM是不能独立安装的。 JRE和JDK都是可以独立安装的 层层嵌套,jvm包括jdk,jdk包括jre

码农研究僧的博客 6万+

Hutool日期时间处理:告别Java原生Date类的烦恼

还在为Java原生Date类的繁琐操作而头疼吗?还在为SimpleDateFormat的线程安全问题而烦恼吗?Hutool的日期时间工具类`DateUtil`和`DateTime`将彻底解决这些问题,让你的日期时间处理变得简单、高效、安全! ## Java原生Date类的痛点分析 在深入Hutool解决方案之前,让我们先回顾一下Java原生日期时间处理的常见痛点: ### 1. Simple...

gitblog_00479的博客 1170

date4j:Java日期时间处理类的全面介绍与实践

date4j是一个专门为Java语言设计的轻量级、高效且功能全面的日期时间处理库。它不仅兼容Java的旧版本,还支持最新版本的特性,提供了一套简洁而直观的API。在处理复杂的日期时间问题时,date4j能够简化代码,提升开发效率,使得开发者能够更加专注于业务逻辑的实现。该库的核心优势在于其易用性和强大的功能支持,这使得date4j成为处理日期时间问题的理想选择。在接下来的章节中,我们将深入了解date4j的这些特性,以及如何在日常工作中应用date4j来解决实际问题。

weixin_35826166的博客 560

【点云数据集】整理汇总(自用,更新ing)

涵盖了各种不同的城市场景:教堂、街道、铁路轨道、广场、村庄、足球场、城堡等等。邮件地址:dmich-request@graphics.stanford.edu,内容需包含:1. 您的姓名、头衔或职位,以及所在机构或隶属关系;license比较难获取,目前可获取的人员:(1)目前隶属于大学、工业研究实验室或其他主要机构的已发表过研究成果的研究人员;普林斯顿 ModelNet 项目的目标是为计算机视觉、计算机图形学、机器人技术和认知科学领域的研究人员提供全面、干净的物体 3D CAD 模型集合。

weixin_44392103的博客 798

Joda-Time完全指南:从入门到精通Java日期时间处理

Joda-Time是Java SE 8之前广泛使用的日期和时间类库的优质替代品,为Java开发者提供了强大而直观的日期时间处理能力。这个开源项目彻底改变了Java处理日期时间的复杂方式,让时间操作变得简单优雅。🚀 ## 为什么选择Joda-Time? 在Java 8之前,Java内置的日期时间API存在着诸多问题:线程不安全、设计混乱、时区处理复杂等。Joda-Time通过以下优势解决了这些

gitblog_00879的博客 1154

编译原理2024期末复习(面向做题,大题速学)【太原理工大学】

归约-归约”冲突就是在项目集规范族一个状态中两个。

m0_63181421的博客 1万+

Java快速入门(22) - 日期和时间类

关注公众号「小白轻松学编程」获取更多教程!

601

python 抖音采集_python爬取抖音视频的实例详解

import requestsimport jsonimport reimport osfrom pprint import pprint as ppimport queueclass DouYin:header = {'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*...

weixin_35795675的博客 1864

【Vite+Vue3+TS】基于Vite+Vue3+TypeScript+ESLint+Prettier+Stylelint搭建项目(亲测超详细)

结合了很多项目和文章,总结一篇项目构建的笔记。 温馨提示:文章末尾记录了我在搭建项目过程中,遇到的一些问题和解决办法 ~

aDiaoYa_的博客 4234

java 时间处理_Java中的时间日期处理

程序就是输入——>处理——>输出。对数据的处理是程序员需要着重注意的地方,快速、高效的对数据进行处理时我们的追求。其中,时间日期的处理又尤为重要和平凡,此次,我将把Java中的时间日期处理方式进行简单的解析,为自己以后的学习做一个备忘,也为初学者做一个借鉴。时间,英文Time;日期,英文Date;日历,英文Calendar。Java中注重语义化,也是用以上的名称对时间日期函数和相关类进...

weixin_36027600的博客 833

图神经网络实战(1)——图神经网络(Graph Neural Networks, GNN)基础

本节全面介绍了图神经网络 (Graph Neural Network, GNN) ,包括其在数据分析和机器学习中的重要性。首先探讨了图作为数据表示的相关概念及其在各个领域的广泛应用;然后深入探讨图学习的重要性,包括不同的应用和技术。最后,重点介绍了 GNN 架构,并对比了它与其他方法之间的原理和性能差异。

盼小辉丶的博客 15万+

Java7日期时间API

文章目录Date构造函数与常用方法日期比较测试Date构造方法和常用方法SimpleDateFormat使用SimpleDateFormat测试日期和字符串的相互转换DateFormat格式代码Calendar创建一个代表系统当前日期的Calendar对象创建一个指定日期的Calendar对象Calendar类对象字段类型Calendar类对象信息的设置测试Calendar类对象信息的获得,创建一个指定日期的Calendar对象GregorianCalendar构造函数与常用方法测试GregorianCal

ThinkWon的博客 5714

从0入门LocoTrack:6倍加速的SLAM追踪新范式实战指南

传统点追踪方法(如CorrTracker、TAPIR)在处理大规模场景或实时任务时,要么精度不足,要么速度太慢。而LocoTrack通过“局部4D相关性”和“Transformer全局关联”的创新设计,实现了精度与速度的双重突破速度:比现有SOTA方法快6倍,吞吐量高达数万点/秒;精度:在Kinetics、DAVIS等数据集上,定位误差显著低于传统方法;鲁棒性:能应对低纹理、动态场景等复杂环境,这是传统方法的“噩梦场景”。

m0_71589036的博客 95

AFSim2.9.0学习笔记 —— 1、AFSim及完整工具介绍(文末附:完整afsim2.9.0源码、编译好的完整工具包、中文教材等)

AFSim2.9.0学习笔记 —— 1、AFSim及完整工具介绍(附:完整afsim2.9.0源码、编译好的完整工具包、中文教材等)

5195

vb.net format时间格式化到毫秒_Java快速入门(23) 日期和时间类

点击上方蓝色“小白轻松学编程”,添加“关注”(*五台山风景区,图片来源于网络)文章目录 1日期 2 应用场景1日期Java在java.util包中提供了Date类,其封装了当前日期和时间。Date类包含了下面两种构造器:序号构造器 & 描述1Date() 这个构造器将对象初始化为当前日期和时间。2Date(long millisec) 这个构造器有一个传...

weixin_39728909的博客 846

基于扩散模型的图像去噪与修复:原理、实现与性能分析【附核心代码】

扩散模型(Diffusion Models)在图像修复、去噪、风格化、超分辨率等领域的应用,展示了其强大的生成能力和灵活性。通过模拟图像逐步加噪声再去噪的过程,扩散模型不仅能够恢复图像的细节,还能生成高质量的图像。本文详细探讨了扩散模型在图像修复和增强中的应用,并通过具体代码示例展示了如何使用扩散模型进行去噪、风格化、图像超分辨率等任务。扩散模型在图像修复中通过逐步去噪修复损坏的区域,在图像去噪中则能够去除图像中的噪声并保留细节;在图像风格化中,扩散模型通过结合目标风格和内容生成富有艺术性的图像;

一键难忘的博客 2932

java中的日期和时间类

日期和时间类 1. 概述 Date类在java.util.Date这个包中 Date类表示特定的瞬间,精确到毫秒,1秒 = 1000毫秒 时间原点(0毫秒):1970年1月1日 00:00:00(英国格林尼治时间 GMT),但是我们中国属于东八区,所以我们的时间原点要加上8个小时,应该是:1970年1月1日 08:00:00。 当前的时间点(毫秒值):计算从时间原点到现在一共经历了多少毫秒,可以用...

阿福呀 392

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Java8InAction新日期时间API详解:简单快速的时间处理方案

Java8InAction项目中的新日期时间API为开发者提供了简单快速的时间处理方案,彻底解决了旧版日期时间类的线程安全问题和设计缺陷。通过`java.time`包下的LocalDate、LocalTime、LocalDateTime等类,开发者可以轻松实现各种时间操作,让时间处理变得高效而直观。 ## 🌟 告别旧API的痛点 在Java8之前,`Date`和`Calendar`类一直是开

gitblog_00290的博客 617

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

掌握 Java 中的日期处理:从旧到新的转变

从早期的到现代的java.timeAPI,Java 对日期处理的能力经历了长足的进步。在日常开发中,掌握这些新的日期处理方法,能够帮助我们更高效、准确地进行时间相关的操作,避免各种潜在的陷阱和错误。希望通过这篇博客,你能够更加深入地理解 Java 中的日期处理,并在未来的项目中灵活应用这些工具!

龚小帅的博客 1115
上一篇: Java基础快速入门:BigDecimal与Integer包装类
下一篇: Java基础快速入门: 数组高级操作与算法基础
Wang's Blog
博客等级 码龄12年 7433粉丝 2421原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值