java.util.Calender
抽象类,精确到毫秒,是与格林威治标准时间(1970 1 1 00.00.00)的偏移量
Calender righttime = Calender.getInstance();
Calender提供类方法,返回一个通用的Calender类型,其日历字段为系统当前时间。
void clear()
eg: righttime.clear() ;//将此 Calendar
的所日历字段值和时间值(从历元至现在的毫秒偏移量)设置成未定义。
Java 本身提供了对 "Gregorian Calendar" 规则的实现。我们从 Calendar.getInstance() 中所获得的实例就是一个 "GreogrianCalendar" 对象(与您通过 new GregorianCalendar() 获得的结果一致)。
import java.io.*;
import java.util.*;
public class WhatIsCalendar
{
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
if (calendar instanceof GregorianCalendar)
System.out.println("It is an instance of GregorianCalendar");
}
}
Calendar 与 Date 的转换非常简单:
import java.util.Calendar;
import java.util.Date;
public class Cal {
public static void main(String args[]){
Calendar calendar = Calendar.getInstance();
// 从一个 Calendar 对象中获取 Date 对象
Date date = calendar.getTime();
// 将 Date 对象反应到一个 Calendar 对象中,
// Calendar/GregorianCalendar 没有构造函数可以接受 Date 对象
// 所以我们必需先获得一个实例,然后设置 Date 对象
calendar.setTime(date);
System.out.println(date);//当前时间,日历格式
}
}
Calendar对象使用注意点:
月份是从0开始的 --想设置8月 ,传入参数应该是7
一些基础用法:
1)计算某一天是一年中的第几星期
Calendar cal=Calendar.getInstance();
cal.set(Calendar.YEAR, 2006);
cal.set(Calendar.MONTH, 8);
cal.set(Calendar.DAY_OF_MONTH, 3);
int weekno=cal.get(Calendar.WEEK_OF_YEAR);
(2)计算一年中的第几星期是几号
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
Calendar cal=Calendar.getInstance();
cal.set(Calendar.YEAR, 2006);
cal.set(Calendar.WEEK_OF_YEAR, 1);
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
System.out.println(df.format(cal.getTime()));
输出:2006-01-02
(3)计算两个任意时间中间的间隔天数
(4) String 和 Date ,Long 之间相互转换 (最常用)
字符串转化成时间类型(字符串可以是任意类型,只要和SimpleDateFormat中的格式一致即可)
通常我们取时间跨度的时候,会substring出具体时间--long-比较
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("M/dd/yyyy hh:mm:ss a",java.util.Locale.US);
java.util.Date d = sdf.parse("5/13/2003 10:31:37 AM");
long dvalue=d.getTime();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String mDateTime1=formatter.format(d);
(5)java 和 具体的数据库结合
在开发web应用中,针对不同的数据库日期类型,我们需要在我们的程序中对日期类型做各种不同的转换。若对应数据库数据是oracle的Date类型,即只需要年月日的,可以选择使用java.sql.Date类型,若对应的是MSsqlserver 数据库的DateTime类型,即需要年月日时分秒的,选择java.sql.Timestamp类型
你可以使用dateFormat定义时间日期的格式,转一个字符串即可
关于Date:
public static void main(String args[]){
// Get the system date/time
Date date = new Date();
System.out.println(date.getTime());
}
我们使用了Date 构造
函数创建一个日期对象, 这个构造函数没有接受任何参数. 而这个构造函数在内部使用了System.currentTimeMillis() 方法来从系统获取日期.
如果用
System.out.println(new Date());
则输出形式为:Tue Nov 08 14:28:07 CST 2005
如何让日期显示的更好看呢 ?java.text.DateFormat :
import java.text.SimpleDateFormat;
import java.util.Date;
public class Cal {
public static void main(String args[]){
/**EEEE是星期, MMMM是月, dd是日, yyyy是年. 字符的个数决定了日期是如何格式化的.
* 传递"EE-MM-dd-yy"会显示Sat-09-29-01. 请察看Sun 公司的Web 站点获取日期格式
*化选项的完整的指示
*/
SimpleDateFormat bartDateFormat =
new SimpleDateFormat("EEEE-MM-dd-yyyy");
Date date = new Date();
System.out.println(bartDateFormat.format(date));
}
}
SimpleDateFormat 的常见时间格式写法:
yy:MM:dd HH:mm:ss 注意大小写,时间是24小时制,24小时制转换成12小时制只需将HH改成hh,不需要另外的函数。
使用标准的日期格式化过程
import java.text.DateFormat;
import java.util.Date;
public class DateExample4 {
public static void main(String[] args) {
Date date = new Date();
DateFormat shortDateFormat =
DateFormat.getDateTimeInstance(
DateFormat.SHORT,
DateFormat.SHORT);
DateFormat mediumDateFormat =
DateFormat.getDateTimeInstance(
DateFormat.MEDIUM,
DateFormat.MEDIUM);
DateFormat longDateFormat =
DateFormat.getDateTimeInstance(
DateFormat.LONG,
DateFormat.LONG);
DateFormat fullDateFormat =
DateFormat.getDateTimeInstance(
DateFormat.FULL,
DateFormat.FULL);
System.out.println(shortDateFormat.format(date));
System.out.println(mediumDateFormat.format(date));
System.out.println(longDateFormat.format(date));
System.out.println(fullDateFormat.format(date));
}
}
String 与日期的转化
DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
DateFormat format 2= new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
Date date = null;
String str = null;
// String转Date
str = "2007-1-18";
try {
date = format1.parse(str);
data = format2.parse(str);
} catch (ParseException e) {
e.printStackTrace();
}
//Date转String
date=new Date();
str=format1.format(date);
str=format2.format(date);