Java日期处理

Java8日期处理 Java 8引入了全新的日期时间格式工具,线程安全而且使用方便。它自带了一些常用的内置格式化工具。// 使用预定义的格式化工具去解析或格式化日期。 阅读详情

学习Java日期处理,看见这一篇比较详细,转载之。

转自:http://www.cnblogs.com/hqr9313/archive/2012/04/19/2458221.html


时间日期
1)java中的时间类有:Date和Calendar

2)java中时间类的本质 long(毫秒数)
  
Date = long +历法算法(方法gerYear())
  Calendar = long +历法算法(方法ger())

3) 时间的标准有两种
 (1970)GMT long
 (0)UTC long
4) java中基本的时间表示GMT long
5) java提供了Date类型表示时间和日期
 Date 是long 类型的包装
6) Calendar 是历法的抽象
 历法:公历,农历,太阳历
7) GregorianCalendar是历法的实现,采用公历的算法实现的
 Calendar cal = Calendar.getInstance();
 Calendar cal = new GregorianCalendar();//除了日本和泰国,效果等同于上一句
8) Date和 Calendar的默认值就是系统当前时间

一 java中表示时间的方式:
1) 格林威治时间(GMT):1970年1月1日 00:00:00(注:中国是东八区,所以要+8个小时)
  也就是1970年1月1日 08:00:00
2 )公元元年(UTC): 0年
3 )目前java中3种日期表达方式long, Date , Calendar都在用


 1 例子
 2 import java.util.Calendar;
 3 import java.util.Date;
 4 import java.util.GregorianCalendar;
 5 
 6 public class LongDateDemo {
 7  public static void main(String[] args) {
 8   long now = System.currentTimeMillis();
 9   long year = now/1000/60/60/24/365 +1970;
10   System.out.println(year);
11   //一年 地球绕太阳一圈(365天+1/4天)
12   //原点(公元元年)
13   
14   /* date.getYear()是将date内部的long时间,根据历法计算
15    * 为年份,返回值是2位数年份,如:1997年返回97,但是过了
16    * 2K年,返回3位数年份,如2012返回112
17    */
18   
19   //老板本
20   Date date = new Date();//默认是当前时间(long)
21   int y = date.getYear()+1900;
22   int month = date.getMonth()+1;
23   System.out.println(y+"年"+month+"月");
24   
25   //新版本
26   //Calendar 历法
27   Calendar cal = new GregorianCalendar();//默认是当前时间(long)
28   y = cal.get(Calendar.YEAR);//2012
29   month = cal.get(Calendar.MONTH)+1;//4
30   System.out.println(y+"年"+month+"月");
31   
32   
33  }
34 
35 }

 


二 时间类型转换  long <-> Date <-> Calendar
 long --->Date :  dat = new Date(l)
       dat.setTime(l)

 Date --->Calendar : cal.setTime(dat)

 

 Calendar ---> Date: cal.getTime()


 Date ---> long :dat.getTime()
 注:Date dat  ,  long l  ,Calendar cal

例子


 1 import java.util.Calendar;
 2 import java.util.Date;
 3 import java.util.GregorianCalendar;
 4 
 5 /**
 6  * 时间的类型转换
 7  */
 8 public class DateCaseDemo {
 9  public static void main(String[] args) {
10   long gmt = 0;//格林威治时间 1970/01/01
11   
12   Date date = new Date();
13   date.setTime(gmt);//回到1970 元旦,相当于long -->Date
14   System.out.println(date.getYear()+1900);//1970
15   
16   Calendar cal = new GregorianCalendar();
17   //date --> cal
18   cal.setTime(date);//将cal设置为date的时间,也是1970
19   System.out.println(cal.get(Calendar.YEAR));//1970
20   //date 和 cal ,gmt 代表同一时刻
21   //加-1天,是在当前时间上加-1天,就是减少1天,就是减少1天的毫秒数(1000*60*60*24)
22   cal.add(Calendar.DAY_OF_YEAR,-1);
23   Date d = cal.getTime();
24   System.out.println(d);//1969
25   long l = d.getTime();
26   System.out.println(l);//-86400000,因为是在原点以前的时间
27 
28   
29  }
30 
31 }

 

三 时间的输入与输出
1)  日期输出的本质是将Date转换为格式化的String
2)  日期输入的本质是将格式化的 String转换为 Date
3)  SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
   构建SimpleDateFormat 一般提供日期的格式"yyyy-MM-dd"具体参看javadoc
    如:"yyyy-MM-dd HH:mm:ss"
     "yyyyMMdd"
     "dd/MM/yy"
     "MM/dd/yyyy"

常用方法

 fmt.parse(String)    可以实现将(合法)字符串解析为日期类型,经常用于处理日期输入
 fmt.format(Date)     可以把日期格式化为字符串用于输出处理

使用字符串String输出时间

 Date ---> String:
  DateFormat fmt = new SimpleDateFormat("HH:mm:ss");
  fmt.format(date)

把字符串String时间转为Date时间(个是必须相同)

 String --> Date :
  DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
  fmt.parse("1999-2-2")
注:java没有提供String直接转换为Calendar的API方法,但第三方提供的API有这种方法
 如果Calendar需要转为String,必须先转换为Date
 Calendar ----> Date :
  Date dat = cal.getTime();

例子


 1 import java.text.ParseException;
 2 import java.text.SimpleDateFormat;
 3 import java.util.Date;
 4 
 5 public class DateIODemo {
 6  public static void main(String[] args) throws ParseException {
 7   Date date = new Date();//当前时间,当前毫秒数
 8   //输出yyyy-MM-dd HH:mm:ss
 9   SimpleDateFormat fmt = 
10    new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
11   //将日期类型格式化为时间字符串
12   String str = fmt.format(date);//日期格式化
13   System.out.println(str);//2012-12-21 00:00:00
14   //解析日期字符串为日期类型对象
15   String day = "2012-12-21";
16   SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd");
17   Date d = f.parse(day);//将日期字符串解析为毫秒数
18   long l = d.getTime();
19   System.out.println(fmt.format(d));
20   String s = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
21   System.out.println(s);//2012-04-18
22  }
23 
24 }
复制代码

 

四 时间的计算
 时间计算的问题

 1) 本质是时间毫秒数的计算

 2) 简单时间计算,直接计算毫秒数,如:3天以后,2小时等
 3) 复杂时间计算,利用Calender类提供的历法算法实现
常用方法:
     add() set()
     Calendar 提供的方法本是上也是计算毫秒数, 


例子
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

public class DateCalDemo {
 public static void main(String[] args) {
  //简单时间计算
  long l = System.currentTimeMillis();//当前时间
  l += 1000L*60*60*24*3;//3天以后
  SimpleDateFormat sdm = new SimpleDateFormat("yyyy-MM-dd");  
  String s = sdm.format(new Date(l));
  System.out.println(s);
  //复杂时间计算
  Calendar cal = new GregorianCalendar();
  cal.add(Calendar.YEAR, 2);//2年以后
  cal.set(Calendar.MONTH,Calendar.JANUARY);//设置月份为1月
  System.out.println(sdm.format(cal.getTime()));//2年以后的1月
  
 }
}

例子2
package com.tarena.day16;

import java.util.Calendar;
import java.util.Date;

public class SpecialDateDemo {
 public static void main(String[] args) {
  
 }
 /**
  * 计算商品的促销日期special Date,规则:商品过期前两周五促销 
  * @param creat
  * @param months
  * @return
  */
 public static Date special(Date creat,int months){
  Calendar cal = Calendar.getInstance();
  cal.setTime(creat); //生产日期
  cal.add(Calendar.MONTH, months);  //过期日
  cal.add(Calendar.WEEK_OF_YEAR, -2);  //回调2周
  if(cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY){//如果是星期天
   cal.add(Calendar.WEEK_OF_YEAR, -1);//回调一周
   cal.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);//调到本周的周五
  }
  return cal.getTime();
 }

}

 

【嵌入式】AMIC和DMIC(什么是数字麦和模拟麦) 最近在做一个关于MIC的项目,同事不太清楚AMIC和DMIC的区别,又有高手详细解释了其原理,在此整理记录一下,方便后续查阅。 阅读详情

相关推荐

CAD制图

CAD制图可以提高设计效率和准确性,并方便文档的存档和交流,是现代工程设计中不可或缺的一部分。·CAD三维开发是指使用计算机程序和工具来创建、编辑和操作三维模型、图形和设计的过程。它在工程、建筑、制造和游戏等领域广泛应用。CAD三维开发可能涉及到复杂的图形算法、性能优化、并行计算等方面的内容,因此需要深入学习和实践,以提高开发的效率和质量。

RZer的博客 1651

java Date 和 Calendar类 万字详解(通俗易懂)

java API专题——常用类Date 和 Calender类 内容分享。

优快云 / 稀土掘金/ B站 / GitHub: Cyan_RA9 3867

DisplayPort信号通道深度解析:从物理层到协议栈

DisplayPort(DP)是一种面向高速串行通信的数字显示接口标准,其核心在于嵌入式时钟、自适应均衡与链路训练三位一体的物理层架构。不同于HDMI依赖独立时钟的TMDS方案,DP通过差分主链路(Main Link)承载编码数据流,以8b/10b或128b/132b编码实现高带宽与强鲁棒性。该技术价值体现在多速率自适应、误码恢复能力及对PCB布线与阻抗控制的严苛要求,广泛应用于8K显示、工业视觉、GPU直连等高性能场景。本文聚焦DP信号通道的管脚级实现、三层协议解耦(物理层/数据链路层/事务层)及链路训练

weixin_34214500的博客 254

Java 的Date和Calendar

Date表示特定的瞬间,精确到毫秒。它允许把日期解释为年、月、日、小时、分钟和秒值;它也允许格式化和解析日期字符串;Calendar类是一个抽象类,时间操作类,由于Date类过于古老,许多的构造器和方法都已经过时,已经满足不了需求。因此Java推荐使用Calendar来完成时间计算等操作。它为特定瞬间与一组诸如YEAR、MONTH、DAY_OF_MONTH、HOUR等日历字段之间的转换提供了一些方法,并为操作日历字段。注意区别Date是日期数据,Calendar是数据操作类。......

m0_52261367的博客 2391

【Python爬虫案例教学】超简洁代码采集原神所有角色信息

(。・∀・)ノ゙嗨 大家好,这里是池鱼

xiaoyuan_____的博客 2421

YOLOv8改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Backbone、SPPF、Neck、检测头等全方位改进

1️⃣本专栏已更新150多种不同的改进方法,所使用并改进的每一个模块均包含详细的模块分析、原理讲解、个人总结、多种改进方式以及完整的修改流程,所有改进100%可直接运行。2️⃣所有改进点均为近三年顶会,顶刊提出的先进算法,将其融入到中,紧跟学术热点,适应不同的任务场景。3️⃣团队内发表数篇SCI论文,熟悉完整的发表流程,订阅专栏即可进群享受模型训练、模型改进、论文写作、投稿选刊,从入门到论文的各种答疑内容。4️⃣专栏内容会持续更新,最近更新时间:2024-12-24。项目介绍在大家购买专栏后,加入学

Limiiiing的博客 1万+

Java中常用的Date类与Calendar类

Data类 Data代表了一个特定的时间,精确到毫秒 方法名 说明 public Date() 分配一个date对象,并初始化,以便它代表它被分配的时间,精确到毫秒 public Date(long data) 分配一个date对象,并将其初始化为表示基准时间起指定的毫秒数 Data的常用方法 方法名 说明 public lon

m0_54091790的博客 749

有道龙虾LobsterAI vs. OpenClaw:对比与安装部署攻略

LobsterAI是"中国版OpenClaw",更注重易用性和中文场景适配;OpenClaw是技术极客的玩具,需要大量命令行操作。

lpfasd123的博客 2395

Java核心类库——时间Date和Calendar

时间日期1)java中的时间类有:Date和Calendar 2)java中时间类的本质 long(毫秒数)Date = long +历法算法(方法gerYear())Calendar = long +历法算法(方法ger()) 3) 时间的标准有两种(1970)GMT long(0)UTC long4) java中基本的时间表示GMT long5) java提供了Date类型表示...

weixin_30258901的博客 207

AI Agent Harness Engineering 的“热插拔”能力:模块化设计思路

本文我会结合我在大厂做AI Agent平台的实战经验,从核心概念、架构设计、代码实现、落地实战多个维度,给大家详细讲解AI Agent Harness Engineering的核心能力——热插拔的模块化设计思路。我们会从问题根源出发,一步步搭建一个完整的支持热插拔的Agent Harness框架,包含组件抽象、注册中心、生命周期管理、配置驱动、容错机制等核心模块。

AI天才研究院 502

058、时域降噪(Temporal Denoise):运动补偿与递归滤波在视频降噪中的应用

本文深入探讨了时域降噪(Temporal Denoise)技术在视频处理中的应用。作者通过车载环视项目案例,揭示了空域降噪的局限性,提出利用帧间信息进行降噪的核心思路。文章详细解析了递归滤波和运动补偿两大关键技术,指出递归滤波简单但易产生拖影,而运动补偿通过计算运动矢量解决此问题。作者还分享了多帧降噪方案的优势与算力挑战,并总结了噪声模型匹配、运动矢量一致性等实战调优经验。最后强调时域降噪需要与空域降噪平衡,指出调试工具的重要性,提出"在保证运动区域无鬼影的前提下追求信噪比"的实践原则,体现了算法复杂度与效

zzfmlxs的博客 92

Java时间日期的处理:Java Date类、Calendar类详解

Java时间日期的处理:Java Date类、Calendar类详解

m0_74309242的博客 2163

AutoSAR系列讲解(深入篇)13.6-闪烁一颗LED灯 6

闪烁一颗LED灯:配置SWC和生成代码

雪云飞星的博客 1万+

java的日期处理

整理-JAVA日期的处理/*** 有关日期工具类(extends TimeUtil)* * TimeUtil主要功能有:* 1.各种日期类型(字符,util.Date,sql.Date,Calendar等)转换* 2.获取指定日期的年份,月份,日份,小时,分,秒,毫秒* 3.获取当前/系统日期(指定日期格式)* 4.获取字符日期一个月的天数* 5.获取指定月份的第一天,最后一天* * Da

heiyv的专栏 1104

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

java中日期处理,Java中日期处理的一些坑

记录下最近在用java处理日期格式的时候遇到的一些坑,虽然是挺简单的一些点,但是如果不了解清楚在使用的时候还是会走很多弯路的。相关类Java8 之后,涉及日期处理的类基本都分到了 java.time 包下,非常清楚,功能也做了强化。而在这之前,如果我们要处理日期,就只能组合的使用 java.util 以及 java.text 这两个包,感觉十分凌乱。当然,以后我们就不用再纠结这些了,直接用 jav...

weixin_29062255的博客 717

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

java处理日期的类_Java中的日期处理类

在Java中可以使用Date类和Calendar类来处理日期但是Date类很多方法都过时了,推荐使用Canlendar类来处理日期,并对日期的格式化做了介绍。下面的部分将会逐一介绍Date类Java提供了Date类来处理日期、时间,Date类既包含日期,也包含时间。Date类从JDK1.0版本就开始存在,存在时间久远,提供的6个构造器中,已有4个建议放弃使用,目前使用的为:Date():生成一个以...

weixin_36364044的博客 552

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Java中的日期处理

原先的日期API存在线程安全问题,在单线程的情况下不会出现什么问题,但是在高并发的情况下,就会出现问题了,为了解决这一问题,Java8提供了一套全新的API来处理日期。API描述日期、时间、日期时间时间戳信息计算两个时间对象之间的时间间隔,精度为纳秒计算两个日期之间的时间间隔,以年、月、日为单位提供了一些方法用于方便的进行日期时间调整用于进行日期时间格式化和解析。

日暮南城故里的博客 1800

18 种Java 8处理日期的方式

18 种Java 8处理日期的方式

weixin_45634364的博客 1602

java处理日期的类_java中的日期处理类总结

转自http://blog.youkuaiyun.com/shibenjie/article/details/4263912java中的日期处理类总结:Date/Calendar/GregorianCalendar/DateFormat/SimpleDateFormat类今天花了好大一点时间把java的日期类做了一下整理,哈1、Date类(该类现在很少用了)lDate类对象的创建:n...

weixin_29143935的博客 337

java处理日期的类_Java 日期处理类

日期处理类Date类当前日期时间 java.util.Dateimport java.util.Date;public class TestDemo {public static void main(String [] args) {Date date = new Date();System.out.println(date);}}运行结果:Sat Jun 29 21:56:04 CST 2019...

weixin_35744893的博客 382

Java中的时间和日期处理

日期处理 旧版本 Date Calendar Java 8 日期和时间:LocalDate和LocalTime 创建LocalDate和LocalTime的两种方式 读取LocalDate和LocalTime常用值的两种方式 合并日期与时间LocalDateTime 机器时间处理 旧版本:Timestamp Java 8:Instant 时间区间:Duration和Per...

栋先生 1万+

JAVA中的日期处理

任何一个程序,日期处理时难免的。Java 中日期处理主要使用三个类: java.util.Date //日期 java.text.DateFormat //日期格式化 java.util.Calendar //日历 java.sql.Date 一般项目中日期处理的需求也有三个: 把一个日期格式化为一个字符串; 把一个字符串格式化为日期; 对日期修改的操作,如计算某一天之后的 100 天是几月几号。 一.Date Date 表示日...

weixin_52452030的博客 850

Java8日期处理总结

Java 8引入了全新的日期时间格式工具,线程安全而且使用方便。它自带了一些常用的内置格式化工具。下面这个例子使用了格式化工具将2018年2月10日格式化成20180210。// 使用预定义的格式化工具去解析或格式化日期。

weixin_44228376的博客 924

Java对日期的处理

Java对日期的处理 java.util.Date是Java中使用最多的类。大家可能对到底使用哪个包中的Date类不是很清楚。从下面的这张类的继承关系图可以看出java.sql.Date是继承java.util.Date的。而且java.sql.Date的大部分方法都是过时的,只有一个setTime()可用。从其中的介绍也可以看出 A class which can consume and pr

598

java处理日期

刚开始学习java的时候我们常用的日期类: java.util.Date java.text.SimpleDateFormat java.util.Calendar import java.util.Date; import java.text.SimpleDateFormat; import java.util.Calendar; public class TestDate { public static void main(String[] args) throws Ex

weixin_45856470的博客 195

java日期处理bean

java日期处理bean Java code import java.text.ParsePosition; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.uti

tyut_fantao的专栏 442
上一篇: Win7下安装jdk和Tomcat
下一篇: JAVA集合学习笔记
csc_csc_csc
博客等级 码龄15年 169粉丝 70原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值