Java时间日期处理——Date和Calendar

FPGA实战:给你的UART串口通信加上Verilog奇偶校验位(Modelsim仿真验证) 本文详细介绍了如何在FPGA中实现UART串口通信的Verilog奇偶校验功能,包括发送端校验位生成和接收端校验检测的设计与实现。通过Modelsim仿真验证,确保数据传输的可靠性,适用于嵌入式系统和数字通信领域。 阅读详情

转载自: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();
 }

}

 
复制代码
液晶电视维修必看:TCON逻辑板故障排查全指南(附常见问题解决方案) 本文详细解析了液晶电视TCON逻辑板的工作原理与故障排查方法,涵盖LVDS信号处理、DC-DC电压系统等核心知识。提供从基础测量到高级维修的完整指南,帮助技术人员快速诊断黑屏、竖线等常见故障,并给出预防性维护建议,提升维修效率与成功率。 阅读详情

相关推荐

潜流式人工湿地计算_复合人工湿地净化水产养殖污水技术

技术概论1. 定义与分类人工湿地是指用人工筑成水池或沟槽,底面铺设防渗漏隔水层,充填一定深度的基质层,种植水生植物,利用基质、植物、微生物的物理、化学、生物三重协同作用使污水得到净化的系统。当池塘养殖污水进入人工湿地时,其污染物被床体吸附、过滤、分解而达到水质净化作用。按照水体流动方式,人工湿地分为表面流人工湿地、水平潜流人工湿地、垂直潜流人工湿地以及由前面几种湿地混合搭配的组合式人工湿...

weixin_42365490的博客 4247

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

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

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

手把手教你用gmid方法设计二级运放:从理论到仿真全流程(附避坑指南)

本文详细介绍了使用gmid方法设计二级运放的全流程,从理论到仿真实践,特别针对初学者常见问题提供避坑指南。通过系统化的晶体管尺寸确定技术,帮助工程师在性能、功耗和面积之间找到最佳平衡点,适用于模拟集成电路设计中的关键模块开发。

weixin_29213525的博客 272

Java 的Date和Calendar

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

m0_52261367的博客 2391

开源项目 ruoyi-sso-oauth2(一)环境配置

Ruoyi若依实现单点登录SSO、oauth2认证

Xiaoweidumpb 9684

Frida实战:SSL Pinning绕过技术全解析

本文详细解析了如何使用Frida工具绕过SSL Pinning技术,包括环境搭建、四种实战绕过方案及常见问题排查指南。通过具体代码示例和实战经验,帮助安全研究人员快速掌握SSL Pinning绕过技术,适用于金融类App的安全测试场景。

weixin_42530732的博客 188

Java中常用的Date类与Calendar类

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

m0_54091790的博客 749

RK3588 buildroot 制作的系统增加 docker 支持

RK3588 使用buildroot制作的系统添加 docker 和 docker-compose 的功能

荻夜的博客 1567

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

刷爆 Java 基础!1000 道经典面试题精解第一篇【序列化】

自定义序列化 / 反序列化的实现方式在实现接口的类中,手动重写和方法在方法内优先调用执行默认序列化逻辑;追加自定义逻辑(如敏感数据加密、临时字段赋值、兼容旧版本数据等)。// 序列化ID,保证兼容性// 敏感字段,默认不序列化,自定义处理// 自定义序列化// 执行默认序列化:写入username// 自定义逻辑:密码加密后写入// 自定义反序列化// 执行默认反序列化:读取username// 自定义逻辑:读取加密密码并解密// 模拟加密/解密工具方法。

七叔的博客 192

【Python高阶开发】12. 工业知识图谱实战:从0构建设备故障诊断系统(附Neo4j部署+完整代码)

摘要:传统工业设备故障诊断依赖专家经验,存在知识难沉淀、故障定位慢、根因分析不彻底等痛点。本文基于开源工具栈(Neo4j+Py2neo+Spacy+FastAPI),从0到1构建工业知识图谱故障诊断系统。内容涵盖:知识图谱核心概念解析、Neo4j图数据库部署、工业设备本体设计、多源知识抽取(结构化Excel+非结构化手册)、图谱构建与查询、故障诊断与根因分析功能实现,以及可视化与API服务部署。每个模块附完整可运行代码及执行结果,新手可按步骤复现全流程,进阶读者可直接复用代码到实际项目

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1107

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

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

m0_74309242的博客 2163

用MATLAB计算卡方值

然后,我们计算了期望频数,即在两个分类变量独立的情况下,每个单元格的预期频数。接下来,我们使用卡方检验的公式计算了卡方值。卡方检验是一种常用的统计方法,用于确定两个分类变量之间是否存在相关性。它基于观察到的频数和期望频数之间的差异来评估分类变量之间的独立性。在MATLAB中,我们可以使用。请注意,这只是一个简单的示例代码,用于说明如何使用MATLAB计算卡方值。在实际应用中,您可能需要根据您的具体数据和研究问题进行相应的修改和调整。在上面的代码中,我们首先创建了两个分类变量。函数显示了计算得到的卡方值。

CodeNexus的博客 2658

Java中的时间日期处理

一、与时间日期有关的类。   java.util.Date。实现类,其对象具有时间、日期组件。   java.util.Calendar。抽象类,其对象具有时间、日期组件。   java.sql.Date。实现类,其对象具有日期组件。   java.sql.Time。实现类,其对象具有时间组件。   java.sql.Timestamp。实现类,其对象具有时间日期组件

javaloveiphone的专栏 792

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

时间日期处理类(Date类,Calendat类)

时间日期处理类(Date类,Calendat类) 在Java中获取当前时间,可以使用java.util.Date类和java.util.Calendar类完成。其中,Date类主要封装了系统的日期和时间的信息,Calendar类则会根据系统的日历来解释Date对象。下面详细介绍这两个类的具体使用。 Date类 Date类表示系统特定的时间戳,可以精确到毫秒。Date对象表示时间的默认顺序是星期,月,日,小时,分,秒,年。 1.构造方法 Date类有如下两个构造方法: Date():此种形式表示分配 Dat

淮宁湾的博客 844

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

浅谈JAVA时间日期处理函数

本次测试的代码如下: package date;import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;public class Date_EA...{    

EndAll的专栏 2373

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Java中时间日期相关类Date、DateFormat、Calendar、System等

Java中时间日期相关类Date、DateFormat、Calendar、System一、Date(java.util.Date)1. 概念2. 构造方法3.常用方法二、DateFormat(java.text.DateFormat)1.概念2.构造方法3.常用方法三、Calendar日期类(java.util.Calendar)1.概念2.属性3.构造方法4.常用方法5.注意四、System类(java.lang.System)1.概念2.字段3.常用方法 一、Date(java.util.Date) 1

A-Itfuture的博客 630

java date 实例_Java 时间日期详细介绍及实例

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

weixin_42217306的博客 458

Java 中Calendar、Date、SimpleDateFormat学习总结

在之前的项目中,经常会遇到Calendar,Date的一些操作时间的类,并且总会遇到时间日期之间的格式转化问题,虽然做完了但是总是忘记,记不清楚,每次还都要查找资料。今天总结一下,加深印象。 Calendar Calendar是java.util 包下面的一个抽象类,它为特定瞬间与一组诸如YEAR、MONTH、DAY_OF_MONTH、HOUR等日历字段之间的转换提供了一些...

baiji2407的博客 255

Java中与时间相关的几个类(Date、Calendar、SimpleDateFormat)

我们平时做项目过程中,很多时候都会与时间、日期打交道,今天我们就来讲讲在Java里面如何较好的使用这些与时间相关的类。希望通过今天的讲解能够使得以后在Java中使用时间相关的操作时能够信手拈来。首先,让我们先看一个例子:public static void main(String[] args) { SimpleDateFormat df = new SimpleDateFormat

ftp_2014的专栏 738

Java常用API之Date类、DateFormat类、Calendar类浅显应用

这是我第一次写播客,用来记录自己学习Java的方向和进程,探索Java语言世界的奇妙之旅。 如果文中有错误的地方,希望前辈们可以指点一二。 常用API——Date类 1、Date类的概述 类Date用来表示特定的瞬间,可以精确到毫秒 实际应用可以用来获取当前系统的时间信息,精确到毫秒值 2、Date类常用的构造方法 Date() 获取当前系统时间 Date(long time) 根据指...

追忆的博客 433

Java学习之路0724(十)(JSon解析、Date类与Calendar类、集合类、泛型、枚举)

利用Java来生成和解析JSON Date类与Calendar类 集合类 Collection List集合 Set集合 Map 泛型 枚举 利用Java来生成和解析JSONJson用来传输网络数据,进行小的数据传输/* * 解析Json */ import java.io.File; import net.sf.json

wujie5201的博客 1407

java date setyear_Java中的时间日期处理

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

weixin_42616115的博客 709

时间类型:Date类、DateFormate类、Calendar类

一、Date类:package 常用的时间类; import java.util.Date; public class DateTest { //类Date表示特定的瞬间,精确到毫秒 /* * Date类常用的方法: * 构造方法: * public Date():返回当前时间 * public Date(long date):返回指定毫秒值的日期对象 * 普通方法: ...

Java学习 1894

时间日期类

时间日期是每个程序都不可避免要操作到的数据类型。

BroRiver 2708
上一篇: Java的字节流和字符流
下一篇: Java中的堆和栈的区别
KingLearnJava
博客等级 码龄12年 93粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值