当前位置: 首页 > wzjs >正文

本地最好的网站开发建设公司自动友链网

本地最好的网站开发建设公司,自动友链网,松江建设网站公司,长春个人做网站Java Date 类深度解析 1. Date 类核心知识 (1) 基本概念 作用:表示特定的瞬间,精确到毫秒 存储本质:内部维护一个long型变量,存储自1970-01-01 00:00:00 GMT(Unix纪元)以来的毫秒数 (2) 关键构造方法 …

Java Date 类深度解析

1. Date 类核心知识

(1) 基本概念

  • 作用:表示特定的瞬间,精确到毫秒

  • 存储本质:内部维护一个long型变量,存储自1970-01-01 00:00:00 GMT(Unix纪元)以来的毫秒数

(2) 关键构造方法

java

// 1. 无参构造:当前系统时间
Date now = new Date(); // 2. 指定毫秒数构造
Date date = new Date(1625097600000L); // 2021-06-30 00:00:00// 3. 已废弃构造方法(不推荐)
@Deprecated
public Date(int year, int month, int day)  // 年份要+1900,月份0-11

(3) 常用方法

方法作用示例
getTime()获取毫秒时间戳long ts = date.getTime()
setTime(long)设置时间date.setTime(0L)
after(Date)时间比较date1.after(date2)
before(Date)时间比较date1.before(date2)

2. 新旧API对比

(1) 遗留问题

  • 缺陷1:月份从0开始(0=一月)

  • 缺陷2:年份需要+1900

  • 缺陷3:非线程安全(SimpleDateFormat同理)

(2) 替代方案(Java 8+)

java

// 使用Instant替代Date
Instant instant = Instant.now();// 本地日期时间
LocalDateTime ldt = LocalDateTime.now();// 时区转换
ZonedDateTime zdt = ZonedDateTime.now(ZoneId.of("Asia/Shanghai"));

3. 格式化与解析

(1) 传统方式(SimpleDateFormat)

java

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 格式化
String str = sdf.format(new Date()); // "2023-05-20 14:30:00"// 解析(注意异常处理)
Date date = sdf.parse("2023-05-20 14:30:00");

(2) 线程安全方案

java

// 方案1:ThreadLocal包装
private static final ThreadLocal<DateFormat> SAFE_FORMAT = ThreadLocal.withInitial(() -> new SimpleDateFormat("yyyy-MM-dd"));// 方案2:DateTimeFormatter(推荐)
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate ld = LocalDate.parse("2023-05-20", formatter);

4. 典型应用场景

(1) 耗时计算

java

Date start = new Date();
// 执行操作...
Date end = new Date();
long cost = end.getTime() - start.getTime(); // 毫秒耗时

(2) 日期比较

java

// 方法1:compareTo
int result = date1.compareTo(date2);// 方法2:时间戳比较
boolean isLater = date1.getTime() > date2.getTime();

5. 常见问题与陷阱

(1) 时区问题

java

// 错误示范:忽略时区
Date date = new Date(); // 默认系统时区// 正确做法:明确时区
TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));

(2) 月份陷阱

java

// 错误:月份从0开始
Date date = new Date(2023-1900, 5, 20); // 实际是6月// 正确:使用Calendar或新API
Calendar cal = Calendar.getInstance();
cal.set(2023, Calendar.MAY, 20);

6. 最佳实践建议

  1. 新项目优先使用java.time包(LocalDateTime等)

  2. 必须使用Date时

    • System.currentTimeMillis()替代new Date()

    • 日期格式化工具有线程安全措施

  3. 时区敏感场景

    • 存储UTC时间

    • 显示时转换为本地时区

7. 面试高频问题

  1. Q:Date和Calendar有什么区别?
    A:Date侧重时间点,Calendar提供日期计算功能

  2. Q:如何解决SimpleDateFormat线程安全问题?
    A:ThreadLocal隔离或使用DateTimeFormatter

  3. Q:为什么Date的大部分方法被废弃?
    A:设计缺陷(时区处理差、API不直观)

记忆口诀

"Date存毫秒,纪元是基准"
"月份从0始,年份1900加"
"新项目用java.time,线程安全记心间"

http://www.dtcms.com/wzjs/310441.html

相关文章:

  • 返利商城网站怎么做注册百度推广账号
  • 企业网站导航菜单优化网站排名如何
  • 能够做代理的网站有哪些营销百度app下载手机版
  • ipv6跟做网站有关吗附子seo教程
  • 网站备案后缀限制推广网站大全
  • 福田网站建设联系电话企业seo排名
  • 湖北人工智能建站系统软件桂林seo
  • 服务好的高端网站建设服务商郑州网络营销排名
  • 网站模板织梦免费开网店3个月来亏了10万
  • 企业模块seo模拟点击工具
  • 实惠高端网站设计品牌湘潭关键词优化服务
  • 在安庆哪里可以做公司网站seo优化网站优化
  • 网站建设的方式百度竞价推广技巧
  • 购物网站建设市场肇庆seo外包公司
  • 公司门户网站的设计与实现世界足球排名前100名
  • 网站只能用ip访问网站吗太原seo排名优化公司
  • 牡丹江市营商环境建设监督局网站互联网营销的方法
  • 有哪些可以做外链的网站学生个人网页制作html
  • 中国电子建设公司网站整合营销案例
  • 襄阳论坛网站建设seo优化软件哪个好
  • 网站可以做赌博广告低价刷粉网站推广
  • 南昌网站seo多少钱sem投放
  • 低价企业网站搭建每日重大军事新闻
  • 成品网站怎样建设seo应该怎么做
  • 常州哪家做网站便宜全球搜索引擎
  • 广州高档网站建设制作网站要花多少钱
  • 网站地图定位用什么技术做网站关键词优化软件效果
  • wordpress给幻灯片添加图片不显示宁波seo公司排名榜
  • do_action wordpressseo优化关键词是什么意思
  • 西安市住房和城乡建设局网站百度投诉热线中心客服