`
xuweijian2009
  • 浏览: 22864 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

Calendar

阅读更多
java.util
Class Calendar

The Calendar class is an abstract class that provides methods for converting between a specific instant in time and a set of calendar fields such as YEAR, MONTH, DAY_OF_MONTH, HOUR, and so on, and for manipulating the calendar fields, such as getting the date of the next week. An instant in time can be represented by a millisecond value that is an offset from the Epoch, January 1, 1970 00:00:00.000 GMT (Gregorian).

The class also provides additional fields and methods for implementing a concrete calendar system outside the package. Those fields and methods are defined as protected.

Like other locale-sensitive classes, Calendar provides a class method, getInstance, for getting a generally useful object of this type. Calendar's getInstance method returns a Calendar object whose calendar fields have been initialized with the current date and time:

     Calendar rightNow = Calendar.getInstance();


今天在写一个登录判断的时候用到calendar,日子如下:
if(user.getExpireTime() != null){
			Calendar now = Calendar.getInstance();
			Calendar expierTime = Calendar.getInstance();
			expierTime.setTime(user.getExpireTime());
			if(now.after(expierTime)){
				throw new SystemException("用户信息失效!");
			}
		}


下面是在网络下找的其他解释,比较详细,复制下来给大家研究
有关如何使用Date和Calender类
昨晚,有人问了一个问题,Date类和Calender有什么区别嘛?我看了一下java API还真说得不好理解。于是在网上也看了看,总总结出来,愿和大家一起学习,需要补充地方还望大家多提意见!
我们将讨论下面的类:

1、具体类(和抽象类相对)java.util.Date
2、抽象类java.text.DateFormat 和它的一个具体子类,java.text.SimpleDateFormat
3、抽象类java.util.Calendar 和它的一个具体子类,java.util.GregorianCalendar
具体类可以被实例化, 但是抽象类(abstract)却不能. 你首先必须实现抽象类的一个具体子类.
一.Date类的使用
首先,看一个实例:
import java.util.Date;

public class Data{
public static void main(String[] args) {
Date date = new Date();//实例化一个date,获得系统日期
System.out.println(date.getTime());//输出当到时间
}
}
我们可以看到输出是一串数字,在 JDK 1.1 之前,类 Date 有两个其他的函数。它允许把日期解释为年、月、日、小时、分钟和秒值。它也允许格式化和分析日期字符串。不过,这些函数的 API 不易于实现国际化。从 JDK 1.1 开始,应该使用 Calendar 类实现日期和时间字段之间转换,使用 DateFormat 类来格式化和分析日期字符串。Date 中的相应方法已废弃。
现在,开始改进:
import java.text.SimpleDateFormat;
import java.util.Date;
public class Data {
public static void main(String[] args) {
SimpleDateFormat dateFormat =
new SimpleDateFormat("yyyy-MM-dd E");//可以查API,根据自己的需要显示格式
Date date = new Date();
System.out.println("今天的日期是: "+dateFormat.format(date));
}
}
二, Calender的使用

我们现在已经能够格式化并创建一个日期对象了, 但是我们如何才能设置和获取日期数据的特定部分呢, 比如说小时, 日, 或者分钟? 我们又如何在日期的这些部分加上或者减去值呢? 答案是使用Calendar 类. 就如我们前面提到的那样, Calendar 类中的方法替代了Date 类中某些方法.
假设你想要设置, 获取, 和操纵一个日期对象的各个部分, 比方一个月的一天或者是一个星期的一天. 为了演示这个过程, 我们将使用具体的子类 java.util.GregorianCalendar. 考虑下面的例子, 它计算得到下面的第十个星期五是13号.

import java.util.GregorianCalendar;
import java.util.Date;
import java.text.DateFormat;

public class DateExample5 {

public static void main(String[] args) {
DateFormat dateFormat =DateFormat.getDateInstance(DateFormat.FULL);

// Create our Gregorian Calendar.
GregorianCalendar cal = new GregorianCalendar();

// Set the date and time of our calendar
// to the system's date and time
cal.setTime(new Date());

System.out.println("System Date: " + dateFormat.format(cal.getTime()));

// Set the day of week to FRIDAY
cal.set(GregorianCalendar.DAY_OF_WEEK, GregorianCalendar.FRIDAY);
System.out.println("After Setting Day of Week to Friday: " +dateFormat.format(cal.getTime()));

int friday13Counter = 0;
while (friday13Counter <= 10) {

// Go to the next Friday by adding 7 days.
cal.add(GregorianCalendar.DAY_OF_MONTH, 7);

// If the day of month is 13 we have
// another Friday the 13th.
if (cal.get(GregorianCalendar.DAY_OF_MONTH) == 13) {
  friday13Counter++;
  System.out.println(dateFormat.format(cal.getTime()));
}
}
}
}



在这个例子中我们作了有趣的函数调用:
cal.set(GregorianCalendar.DAY_OF_WEEK, GregorianCalendar.FRIDAY);

和:
cal.add(GregorianCalendar.DAY_OF_MONTH, 7);

set 方法能够让我们通过简单的设置星期中的哪一天这个域来将我们的时间调整为星期五. 注意到这里我们使用了常量 DAY_OF_WEEK 和 FRIDAY来增强代码的可读性. add 方法让我们能够在日期上加上数值. 润年的所有复杂的计算都由这个方法自动处理.

我们这个例子的输出结果是:
System Date: Saturday, September 29, 2001
当我们将它设置成星期五以后就成了: Friday, September 28, 2001
Friday, September 13, 2002
Friday, December 13, 2002
Friday, June 13, 2003
Friday, February 13, 2004
Friday, August 13, 2004
Friday, May 13, 2005
Friday, January 13, 2006
Friday, October 13, 2006
Friday, April 13, 2007
Friday, July 13, 2007
Friday, June 13, 2008


七、时间掌握在你的手里

有了这些Date 和Calendar 类的例子, 你应该能够使用 java.util.Date, java.text.SimpleDateFormat, 和 java.util.GregorianCalendar 创建许多方法了.

以后我们还会考察两个日期类 java.sql.Date 和 java.util.Date 之间的区别.

分享到:
评论

相关推荐

    JAVA LunarCalendar返回农历(阴历)日期 JAR包 有包括详细DOC文档

    LunarCalendar返回农历(阴历)日期的JAR包 根据指定日期计算对应农历日期(这个计算方法是网上找的,最初的作者是谁已经无法考证了,感谢网络资源吧!),本人封装成好用的JAR包后发不出来,供大家免费下载! ...

    jscalendar-1.0

    &lt;script type=\"text/javascript\" src=\"&lt;%=ctx%&gt;/js/calendar/calendar.js\"&gt; &lt;script type=\"text/javascript\" src=\"&lt;%=ctx%&gt;/js/calendar/calendar-zh.js\"&gt; ...

    toast-ui.react-calendar:用于React.js的TOAST UI日历包装器

    :triangular_flag: 目录事件拉取请求步骤文件资料贡献执照 收集有关使用开源的统计信息TOAST UI Calendar的React Wrapper应用Google Analytics(分析)(GA)来收集有关开放源代码使用情况的统计信息,以便确定...

    自定义日期控件(Calendar加年月选择asp.net C#)

    VS2008自带的Calendar只能一个月一个月的切换,你要选几年前的就受不子,于是本人经过三天的学习制作终于完成了二个DropDownList(年与月的选择)与Calendar互动的绑定,并做成控件,可供初学控件的朋友学习,并提出...

    Business_Calendar_2_Pro_v2.41.1_build_241102.apk

    商务日历Business Calendar是一个完整的的日历应用程序。 1、平滑滚动和可缩放多天(1-14天) 2、图形和文字介绍 3、每月,议程,日期和事件视图 4、快速淡入/淡出收藏夹栏使用的日历 5、搜索功能 6、拖放功能 7、月...

    jQuery Frontier Calendar 1.3.2

    jQuery Frontier Calendar 是整整一个月的 jQuery 日历插件,外观有点像 Google Calendar 。所有 UI 元素(比如下个月和上个月按钮,添加事件表格,工具提示等等)都不属于日历插件。用户可以使用 API 来控制这些...

    POJ 1008 Maya Calendar

    Ya and write a program for him to convert the dates from the Haab calendar to the Tzolkin calendar. Input The date in Haab is given in the following format: NumberOfTheDay. Month Year The first...

    Java 之 Date 和 Calendar 实例

    Java 之 Date 和 Calendar 实例

    bootstrap calendar 全年日历显示

    bootstrap calendar 全年日历显示,可做年度行事历等功能,使用起来特别方便,相关使用方法详见官网:http://www.bootstrap-year-calendar.com/#Documentation/Installation

    Web_Calendar_30 日历控件

    Web Calendar ver 3.0 新加的功能: 1.对日历控件的对象式编程 2.对不同浏览器的兼容 3.对日历控件的样式颜色设置 4.对是否返回时分秒的设置 5.对年份下拉框的年跨度值的设置 6.增加了用方向键快捷键...

    java的calendar具体用法

    那现在最为普及和通用的日历就是 \"Gregorian Calendar\"。也就是我们在讲述年份时常用 \"公元几几年\"。Calendar 抽象类定义了足够的方法,让我们能够表述日历的规则。Java 本身提供了对 \"Gregorian Calendar\" ...

    ASP.NET Calendar如何给每天添加日志

    ASP.NET Calendar如何给每天添加日志

    microsoft calendar control 11.0.8161.0

    VB中的日历控件,microsoft calendar control 11.0.8161.0,请注意版本对应!

    日历日程表联动layui&amp;tui.calendar

    layui 和 tui.calendar 资源, 内含layui日历联动tui.calendar日程表(日、周、月)实例 相关文档: https://nhn.github.io/tui.calendar/latest/Calendar#setCalendars ...

    Calendar日期代码详解

    Calendar日期代码详解

    wpf Calendar日期高亮显示

    wpf中的Calendar控件对某些日期进行 高亮显示。 解决鼠标移动到Calendar内,需点击外部两次才能将焦点移出

    Android代码-WeekCalendar

    WeekCalendar is a library which provides a weekly calendar. The sample project includes the usage of the library. Support for Android 4.0 and up. Feel free to fork or issue pull requests on github. ...

    calendar组件.zip

    内容概要:通过带着读者手写基于微信小程序calendar基础组件,没写很复杂的场景,场景是由选择隔日达,每日达,节假日达,非节假日达,自定义等场景而封装的,读者可以利用此组件进行需求的添加。此组件主要实现的...

    simplecalendar.js记录事件的日历插件

    simplecalendar.js记录事件的日历插件

    Microsoft Calendar Control 9.0.0.2607

    Microsoft Calendar Control 9.0.0.2607, VB中的日历控件!请注意版本对应!

Global site tag (gtag.js) - Google Analytics