Java Calendar类的时间操作_java

Java Calendar 类时间操作,这也许是创建日历和管理最简单的一个方案,示范代码很简单,演示了获取时间,日期时间的累加和累减,以及比较。

注意事项:

Calendar 的 month 从 0 开始,也就是全年 12 个月由 0 ~ 11 进行表示。
而 Calendar.DAY_OF_WEEK 定义和值如下:

Calendar.SUNDAY = 1
Calendar.MONDAY = 2
Calendar.TUESDAY = 3
Calendar.WEDNESDAY = 4
Calendar.THURSDAY = 5
Calendar.FRIDAY = 6
Calendar.SATURDAY = 7

SimpleDateFormat 的格式定义

Java Calendar 演示代码如下:

package demo; 

import java.util.Date;
import java.text.SimpleDateFormat;
import java.text.DateFormat;
import java.text.ParseException;
import java.util.Calendar; 

public class Test
{
 public Test()
 {
 } 

 public static void main(String[] args)
 {
 // 字符串转换日期格式
 // DateFormat fmtDateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 // 接收传入参数
 // String strDate = args[1];
 // 得到日期格式对象
 // Date date = fmtDateTime.parse(strDate); 

 // 完整显示今天日期时间
 String str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS")).format(new Date());
 System.out.println(str); 

 // 创建 Calendar 对象
 Calendar calendar = Calendar.getInstance(); 

 try
 {
  // 对 calendar 设置时间的方法
  // 设置传入的时间格式
  SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-M-d H:m:s");
  // 指定一个日期
  Date date = dateFormat.parse("2013-6-1 13:24:16");
  // 对 calendar 设置为 date 所定的日期
  calendar.setTime(date); 

  // 按特定格式显示刚设置的时间
  str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS")).format(calendar.getTime());
  System.out.println(str);
 }
 catch (ParseException e)
 {
  e.printStackTrace();
 } 

 // 或者另一種設置 calendar 方式
 // 分別爲 year, month, date, hourOfDay, minute, second
 calendar = Calendar.getInstance();
 calendar.set(2013, 1, 2, 17, 35, 44);
 str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS")).format(calendar.getTime());
 System.out.println(str); 

 // Calendar 取得当前时间的方法
 // 初始化 (重置) Calendar 对象
 calendar = Calendar.getInstance();
 // 或者用 Date 来初始化 Calendar 对象
 calendar.setTime(new Date()); 

 // setTime 类似上面一行
 // Date date = new Date();
 // calendar.setTime(date); 

 str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS")).format(calendar.getTime());
 System.out.println(str); 

 // 显示年份
 int year = calendar.get(Calendar.YEAR);
 System.out.println("year is = " + String.valueOf(year)); 

 // 显示月份 (从0开始, 实际显示要加一)
 int month = calendar.get(Calendar.MONTH);
 System.out.println("nth is = " + (month + 1)); 

 // 本周几
 int week = calendar.get(Calendar.DAY_OF_WEEK);
 System.out.println("week is = " + week); 

 // 今年的第 N 天
 int DAY_OF_YEAR = calendar.get(Calendar.DAY_OF_YEAR);
 System.out.println("DAY_OF_YEAR is = " + DAY_OF_YEAR); 

 // 本月第 N 天
 int DAY_OF_MONTH = calendar.get(Calendar.DAY_OF_MONTH);
 System.out.println("DAY_OF_MONTH = " + String.valueOf(DAY_OF_MONTH)); 

 // 3小时以后
 calendar.add(Calendar.HOUR_OF_DAY, 3);
 int HOUR_OF_DAY = calendar.get(Calendar.HOUR_OF_DAY);
 System.out.println("HOUR_OF_DAY + 3 = " + HOUR_OF_DAY); 

 // 当前分钟数
 int MINUTE = calendar.get(Calendar.MINUTE);
 System.out.println("MINUTE = " + MINUTE); 

 // 15 分钟以后
 calendar.add(Calendar.MINUTE, 15);
 MINUTE = calendar.get(Calendar.MINUTE);
 System.out.println("MINUTE + 15 = " + MINUTE); 

 // 30分钟前
 calendar.add(Calendar.MINUTE, -30);
 MINUTE = calendar.get(Calendar.MINUTE);
 System.out.println("MINUTE - 30 = " + MINUTE); 

 // 格式化显示
 str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS")).format(calendar.getTime());
 System.out.println(str); 

 // 重置 Calendar 显示当前时间
 calendar.setTime(new Date());
 str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS")).format(calendar.getTime());
 System.out.println(str); 

 // 创建一个 Calendar 用于比较时间
 Calendar calendarNew = Calendar.getInstance(); 

 // 设定为 5 小时以前,后者大,显示 -1
 calendarNew.add(Calendar.HOUR, -5);
 System.out.println("时间比较:" + calendarNew.compareTo(calendar)); 

 // 设定7小时以后,前者大,显示 1
 calendarNew.add(Calendar.HOUR, +7);
 System.out.println("时间比较:" + calendarNew.compareTo(calendar)); 

 // 退回 2 小时,时间相同,显示 0
 calendarNew.add(Calendar.HOUR, -2);
 System.out.println("时间比较:" + calendarNew.compareTo(calendar));
 }
} 

要计算时间差,可用 Calendar.getTimeInMillis() 取得两个时间的微秒级的时间差,再加以换算即可,比如获得相差天数,代码如下:

// 得微秒级时间差
long val = calendarEnd.getTimeInMillis() - calendarBegin.getTimeInMillis();
// 换算后得到天数
long day = val / (1000 * 60 * 60 * 24);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索java
, calendar
时间
java calendar 时间差、java时间calendar、java calendar 时间戳、java 时间操作、java时间操作类,以便于您获取更多的相关知识。

时间: 2024-10-29 07:02:20

Java Calendar类的时间操作_java的相关文章

Java中的日期和时间类以及Calendar类用法详解_java

Java日期和时间类简介 Java 的日期和时间类位于 java.util 包中.利用日期时间类提供的方法,可以获取当前的日期和时间,创建日期和时间参数,计算和比较时间. Date 类 Date 类是 Java 中的日期时间类,其构造方法比较多,下面是常用的两个: Date():使用当前的日期和时间初始化一个对象. Date(long millisec):从1970年01月01日00时(格林威治时间)开始以毫秒计算时间,计算 millisec 毫秒.如果运行 Java 程序的本地时区是北京时区(

Java日期类SimpleDateFormat时间格式化线程安全问题

SimpleDateFormat 是 Java 中一个非常常用的类,该类用来对日期字符串进行解析和格式化输出,但如果使用不小心会导致非常微妙和难以调试的问题,因为 DateFormat 和 SimpleDateFormat 类不都是线程安全的,在多线程环境下调用 format() 和 parse() 方法应该使用同步代码来避免问题.下面我们通过一个具体的场景来一步步的深入学习和理解SimpleDateFormat类.     一.引子     我们都是优秀的程序员,我们都知道在程序中我们应当尽量

Java String类的常用方法汇总_java

一.String类 String类在java.lang包中,java使用String类创建一个字符串变量,字符串变量属于对象.java把String类声明的final类,不能有类.String类对象创建后不能修改,由0或多个字符组成,包含在一对双引号之间.二.String类对象的创建 字符串声明:String stringName; 字符串创建:stringName = new String(字符串常量);或stringName = 字符串常量;三.String类构造方法1.public Str

Java BigDecimal类用法详解_java

1.引言 借用<Effactive Java>这本书中的话,float和double类型的主要设计目标是为了科学计算和工程计算.他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的.然而,它们没有提供完全精确的结果,所以不应该被用于要求精确结果的场合.但是,商业计算往往要求结果精确,这时候BigDecimal就派上大用场啦. 2.BigDecimal简介 BigDecimal 由任意精度的整数非标度值 和32 位的整数标度 (scale) 组成.如果为零或正数

Java中Date类和Calendar类的常用实例小结_java

前言写后台程序的时候,经常需要存储当前服务器的时间戳,使用时间戳也很方便,客户端和服务器端都可以根据自己的需求做各自的转换 在php里,获取当前时间戳使用time()函数,格式化输出通过Date()函数即可,Java里相对复杂一些,这里简单介绍一下 Java语言中的Calendar,Date,DateFormat组成了Java标准的一个基本但是非常重要的部分.日期是商业逻辑计算一个关键的部分,所有的开发者都应该能计算未来的日期,定制日期的显示格式,并将文本数据解析成日期对象 获取UNIX时间戳在

JAVA中的时间操作

java中的时间操作不外乎这四种情况: 1.获取当前时间 2.获取某个时间的某种格式 3.设置时间 4.时间的运算 好,下面就针对这四种情况,一个一个搞定.   一.获取当前时间   有两种方式可以获得,第一种,使用Date类. j2SE的包里有两个Date类,一个是java.sql.Date,一个是java.util.Date 这里,要使用java.util.Date.获取当前时间的代码如下 Date date = new Date(); date.getTime(); 还有一种方式,使用Sy

Java中常见的日期操作(取值、转换、加减、比较)_java

Java 的开发过程中免不了与 Date 类型纠缠,准备总结一下项目经常使用的日期相关操作,JDK 版本 1.7,如果能够帮助大家节约那么几分钟起身活动一下,去泡杯咖啡,便是极好的,嘿嘿.当然,我只提供了可行的解决方案,并不保证是最佳实践,欢迎讨论. 1. 日期取值 在旧版本 JDK 的时代,有不少代码中日期取值利用了 java.util.Date 类,但是由于 Date 类不便于实现国际化,其实从 JDK1.1 开始,就更推荐使用 java.util.Calendar 类进行时间和日期方面的处

java-关于Java的类Calendar的问题

问题描述 关于Java的类Calendar的问题 import java.util.*; public class TestCalendar { public static void main(String [] args) { Calendar c1=Calendar.getInstance(); System.out.println(c1.get(c1.YEAR)+"年"+(c1.get (c1.MONTH)+1)+"月"+c1.get(c1.DAY_OF_MO

[Java开发之路](3)Java常用类

1.包装类 大家对基本数据类型都非常熟悉,例如 int.float.double.boolean.char 等.基本数据类型是不具备对象的特性,比如基本类型不能调用方法.功能简单...,为了让基本数据类型也具备对象的特性, Java 为每个基本数据类型都提供了一个包装类,这样我们就可以像操作对象那样来操作基本数据类型.  基本类型和包装类之间的对应关系: 包装类主要提供了两大类方法:     1. 将本类型和其他基本类型进行转换的方法     2. 将字符串和本类型及包装类互相转换的方法 pac