`
u011722790
  • 浏览: 6098 次
社区版块
存档分类
最新评论

Java对时间日期的加减

    博客分类:
  • java
阅读更多

 

最近在开发中遇到时间日期上面的一些处理,查询了一些资料,下面列出两种最常用的处理方式

Java提供了3个日期类,Date,Calendar,DateFormat,Date对象主要用于创建日期,获取日期,Calendar可用于获取和设置日期,DataFormat主要用于对日期进行格式化。

1.java.util.Calendar 
Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。 
例: 

Calendar cal = Calendar.getInstance();//使用默认时区和语言环境获得一个日历。   
cal.add(Calendar.DAY_OF_MONTH, -1);//取当前日期的前一天.   
  
cal.add(Calendar.DAY_OF_MONTH, +1);//取当前日期的后一天.   
  
//通过格式化输出日期   
java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd");   
  
System.out.println("Today is:"+format.format(Calendar.getInstance().getTime()));   
  
System.out.println("yesterday is:"+format.format(cal.getTime())); 

 要用Calendar对象得到2014-9-25日期,方法如下:

Calendar calendar = new GregorianCalendar(2014, 8, 25,0,0,0);   
Date date = calendar.getTime();   
System.out.println("Now's the time:"+format.format(date));   

  java月份是从0-11,月份设置时要减1.

GregorianCalendar构造方法参数依次为:年,月-1,日,时,分,秒. 
有些时候我们需要根据时间去取相关年月日的值,Calender提供了方法:

 

int year =calendar.get(Calendar.YEAR);   
 //月份是0-11,所以要加上1
int month=calendar.get(Calendar.MONTH)+1;   
  
int day =calendar.get(Calendar.DAY_OF_MONTH);   
  
int hour =calendar.get(Calendar.HOUR_OF_DAY);   
  
int minute =calendar.get(Calendar.MINUTE);   
  
int seconds =calendar.get(Calendar.SECOND); 

 判断月份最大值,在刚开始对Java不熟悉的时候我获取最大值用了多个判断,但java提供了获取月份最大值得方法

Calendar cal = Calendar.getInstance();   
int day=cal.getActualMaximum(Calendar.DAY_OF_MONTH);   
System.out.println(day);   

 2.java.util.Date 

 

Date类实际上只是一个包裹类, 它包含的是一个长整型数据, 表示的是从GMT(格林尼治标准时间)1970年, 1月1日00:00:00这一刻之前或者是之后经历的毫秒数。

 

获取当前时间:

java.util.Date today=new java.util.Date();   
System.out.println("Today is "+formats.format(today));   

 获取当月的第一天:

java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-01");   
java.util.Date firstDay=new java.util.Date();   
System.out.println("the month first day is "+formats.format(firstDay)); 
 

 获取当月的最后一天:

Calendar cal = Calendar.getInstance();   
int maxDay=cals.getActualMaximum(Calendar.DAY_OF_MONTH);   
java.text.Format formatter3=new java.text.SimpleDateFormat("yyyy-MM-"+maxDay);   
System.out.println(formatter3.format(cal.getTime()));   

 求两个日期之间相隔的天数: 

 

java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd");   
java.util.Date beginDate= format.parse("2007-12-24");   
java.util.Date endDate= format.parse("2007-12-25");  
//相隔毫秒数转化为天数 
long day=(date.getTime()-mydate.getTime())/(24*60*60*1000);   
System.out.println("相隔的天数="+day);   

 一年前的日期: 

java.text.Format formatter=new java.text.SimpleDateFormat("yyyy-MM-dd");   
java.util.Date todayDate=new java.util.Date();   
//一年后的则这里加上365天
long beforeTime=(todayDate.getTime()/1000)-60*60*24*365;   
todayDate.setTime(beforeTime*1000);   
String beforeDate=formatter.format(todayDate);   
System.out.println(beforeDate);  

 10小时后的时间:

java.util.Calendar Cal=java.util.Calendar.getInstance();   
Cal.setTime(dateOper);   
//10小时前的则-10
Cal.add(java.util.Calendar.HOUR_OF_DAY,10);   
System.out.println("date:"+forma.format(Cal.getTime()));  

 3 java.text.DateFormat

SimpleDateFormat 是一个以国别敏感的方式格式化和分析数据的具体类。 它允许格式化 (date -> text)、语法分析 (text -> date)和标准化。

SimpleDateFormat 允许以为日期-时间格式化选择任何用户指定的方式启动。 但是,希望用 DateFormat 中的getTimeInstance、 getDateInstance 或 getDateTimeInstance 创建一个日期-时间格式化程序。 每个类方法返回一个以缺省格式化方式初始化的日期/时间格式化程序。

下面是一个小例子:

import java.text.*;
import java.util.Date;

/**
  SimpleDateFormat函数语法:
  
  G 年代标志符
  y 年
  M 月
  d 日
  h 时 在上午或下午 (1~12)
  H 时 在一天中 (0~23)
  m 分
  s 秒
  S 毫秒
  E 星期
  D 一年中的第几天
  F 一月中第几个星期几
  w 一年中第几个星期
  W 一月中第几个星期
  a 上午 / 下午 标记符 
  k 时 在一天中 (1~24)
  K 时 在上午或下午 (0~11)
  z 时区
 */
public class FormatDateTime {

    public static void main(String[] args) {
        SimpleDateFormat myFmt=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
        SimpleDateFormat myFmt1=new SimpleDateFormat("yy/MM/dd HH:mm"); 
        SimpleDateFormat myFmt2=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//等价于now.toLocaleString()
        SimpleDateFormat myFmt3=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 E ");
        SimpleDateFormat myFmt4=new SimpleDateFormat(
                "一年中的第 D 天 一年中第w个星期 一月中第W个星期 在一天中k时 z时区");
        Date now=new Date();
        System.out.println(myFmt.format(now));
        System.out.println(myFmt1.format(now));
        System.out.println(myFmt2.format(now));
        System.out.println(myFmt3.format(now));
        System.out.println(myFmt4.format(now));
        System.out.println(now.toGMTString());
        System.out.println(now.toLocaleString());
        System.out.println(now.toString());
    }    
    
}

 效果:

2014-09-25 10:55:33

2014年09月25日 10时55分33秒 星期四 

一年中的第 268 天 一年中第39个星期 一月中第4个星期 在一天中10时 CST时区

25 Sep 2014 02:55:33 GMT

2014-9-25 10:55:33

Thu Sep 25 10:55:33 CST 2014

 

分享到:
评论

相关推荐

    日期类的加减及java中所以日期类的操作算法大全

    本文将深入探讨Java中的日期类操作,包括日期的加减运算,以及如何利用不同的日期类进行高效的时间管理。 ### 一、日期类的基本操作 #### 1. 使用Calendar类 `Calendar`类是Java中处理日期和时间的核心类之一,它...

    日期操作,转日期格式,加减日期,日期详解

    在提供的文件列表中,DateAccount.java可能是包含日期操作逻辑的Java源代码文件,而加减日期.txt和转日期格式.txt很可能是详细说明这些操作的文本文件。通过阅读这些文件,你可以更深入地理解如何在实际代码中实现...

    时间计算加减

    课程笔记:时间戳和int类型的数值进行加减,获得date类型的日期,及时间格式的转换

    hive时间按月份加减UDF

    在处理时间相关的数据分析时,有时我们需要对日期进行加减操作,比如按照月份进行增减。这就是Hive时间按月份加减UDF(用户自定义函数)的作用。 在Hive中,内置的时间函数可以满足大部分日常需求,如获取年份、...

    java Calender类 日期的加减.docx

    Java 中的 Calendar 类提供了日期和时间的操作功能,本文将对 Calendar 类的日期加减操作进行详细的介绍和分析。 Calendar 类的日期加减操作 Calendar 类的日期加减操作可以通过 set() 方法实现,例如,设置当前...

    java 日期时间工具类 日期时间的加减 身份证号上的日期是否小于2岁等

    java 日期时间工具类 日期时间的加减 身份证号上的日期是否小于2岁等

    java 实现当前时间加减30分钟的时间代码

    在Java编程中,有时我们需要对当前时间进行加减操作,例如获取当前时间30分钟前或后的时间戳。本文将详细介绍如何使用Java实现这个功能,包括两种不同的方法,并提供一些额外的日期处理知识。 首先,我们需要引入`...

    java日期时间操作函数代码

    3. **日期时间计算**:在旧API中,可以使用`Calendar`类进行日期时间的加减操作。例如,增加一天:`Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.DAY_OF_MONTH, 1); Date newDate = calendar...

    Java自定义日期时间选择控件

    在实现过程中,我们可能还会遇到如日期范围验证、日期时间的计算(如加减日期)等需求,都需要通过适当的逻辑来处理。此外,如果希望在Web环境中使用,可以考虑使用JavaServer Faces (JSF) 或者Vaadin等框架中的日期...

    最全的java时间(日期)工具类

    例如,你可以使用`LocalDateTime.now()`获取当前日期和时间,或者通过`plusDays()`、`minusHours()`等方法进行日期时间的加减运算。`DateTimeFormatter`类用于格式化和解析`java.time`对象,比`SimpleDateFormat`更...

    java 日期相加减.doc

    #### 一、利用`java.util.Calendar`进行日期加减 在Java中,`java.util.Calendar`是一个非常强大的类,用于处理与日期和时间相关的各种操作,包括日期的加减。`Calendar`类提供了一系列的方法来获取、设置和操作...

    日期类加减的年月日版本

    在实际开发中,日期加减常用于计算有效期、计划任务、日历应用等场景。例如,计算信用卡到期日、确定项目交付期限、规划节假日等。 10. **最佳实践**: 使用日期类时,应遵循良好的编程习惯,如避免使用字符串...

    Java_Date_日期时间整理

    可以使用 `java.util.Calendar` 类的 `add()` 方法来进行日期的加减运算。 ```java <%@ page import="java.util.*"%> <%@ page import="java.text.*"%> (); SimpleDateFormat formatter = new SimpleDateFormat("E ...

    mybatis中操作日期实例分析

    在Java中,日期时间类型通常有`java.util.Date`、`java.sql.Date`、`java.sql.Time`和`java.sql.Timestamp`。MyBatis在映射XML文件中,需要对这些类型进行适当地配置,例如使用`jdbcType`属性指定数据库对应的日期...

    java操作日期时间工具类

    4. **日期时间加减操作**:通过增加或减少天数、小时数、分钟数等,可以创建新的日期时间。例如: ```java public static Date addDays(Date date, int days) { Calendar calendar = Calendar.getInstance(); ...

    java 日期算法

    日期类的加减是指对日期类的日期和时间进行加减操作。例如,计算某一月份的最大天数,可以使用 `Calendar` 类的 `getActualMaximum` 方法。首先,需要创建一个 `Calendar` 对象,设置年和月,然后使用 `...

    java 日期帮助类

    3. **日期加减操作**: - `addDays(Date date, int days)`:在日期上增加或减少指定天数。 - `addMonths(Date date, int months)`:在日期上增加或减少指定月数。 - `addYears(Date date, int years)`:在日期上...

    Java编程时间日期API实例解析共15页.pdf.zip

    通过阅读“Java编程时间日期API实例解析共15页.pdf.zip”这份资料,你将能够全面掌握Java时间日期API的用法,理解如何在实际项目中高效地处理日期时间,无论是简单的日期格式化,还是复杂的时区转换和日期计算,都将...

    Java实现时间与日期程序(附源代码)

    在Java编程语言中,处理时间与日期是常见的需求,无论是记录事件发生的时间,还是进行时间相关的计算,都离不开对日期和时间的操作。本教程将深入探讨如何在Java中实现这样的程序,并提供源代码实例。 首先,Java...

    时间日期工具类(包含java8新特性).zip

    3. **日期时间加减**:支持对日期时间进行加减操作,例如添加或减去天数、小时数、分钟等。 4. **日期时间转换**:可能包含将旧的`java.util.Date`转换为新的`java.time`类型的函数,以便更好地利用Java 8的新特性...

Global site tag (gtag.js) - Google Analytics