java Date Dalendar 用法(主要Calendar)
2012-11-13 10:28
288 查看
Calendar nowTime=Calendar.getInstance();
与Date nowTime=new Date();取时间的区别
public String gettime(){
Calendar nowTime=Calendar.getInstance();
String strReturn="";
String strTemp="";
strReturn=String.valueOf(nowTime.get(Calendar.YEAR));
strReturn+="-"+(nowTime.get(Calendar.MONTH)>8?"":"0")+String.valueOf(nowTime.get(Calendar.MONTH)+1);
strReturn+="-"+(nowTime.get(Calendar.DATE)>9?"":"0")+String.valueOf(nowTime.get(Calendar.DATE));
strTemp=String.valueOf(nowTime.get(Calendar.HOUR)+((nowTime.get(Calendar.AM_PM)==1)?12:0));
if(strTemp.length()==1)
strTemp="0"+strTemp;
strReturn+=" "+strTemp;
strTemp=String.valueOf(nowTime.get(Calendar.MINUTE));
if(strTemp.length()==1)
strTemp="0"+strTemp;
strReturn+=":"+strTemp;
strReturn+=":"+String.valueOf(nowTime.get(Calendar.SECOND));
return strReturn;
}
SimpleDateFormat dFmt = new SimpleDateFormat("HHmmss");
int currentTime = Integer.parseInt(dFmt.format(new Date()));
当本地时间的时区不同时,两者就有分别了。具本有何区别,以后有时间再补上
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
造成这种问题的原因可能是:你的操作系统时区跟你JVM的时区不一致。
你的操作系统应该是中国的时区吧,而JVM的时区不一定是中国时区,你在应用服务器的Java虚拟机添加如下配置: -Dfile.encoding=UTF8 -Duser.timezone=GMT+08
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
用Calendar 吧。
方法
getInstance
public static synchronized Calendar getInstance()
用缺省时区和语言环境获得一个日历。
返回值:
一个 Calendar。
getInstance
public static synchronized Calendar getInstance(TimeZone zone)
用给定时区和缺省语言环境获得一个日历。
参数:
zone - 给定的时区。
返回值:
一个 Calendar。
getInstance
public static synchronized Calendar getInstance(Locale aLocale)
用缺省时区和给定语言环境获得一个日历。
参数:
aLocale - 给定的语言环境。
返回值:
一个 Calendar。
getInstance
public static synchronized Calendar getInstance(TimeZone zone, Locale aLocale)
用给定时区和给定语言环境获得一个日历。
参数:
zone - 给定的时区。
aLocale - 给定的语言环境。
返回值:
一个 Calendar。
getAvailableLocales
public static synchronized Locale[] getAvailableLocales()
获得安装 Calendars 的语言环境集合。
返回值:
安装 Calendars 的语言环境集合。
computeTime
protected abstract void computeTime()
将日历的时间域作为毫秒值转换为 UTC。
computeFields
protected abstract void computeFields()
将 UTC 作为毫秒值转换为时间域值。 允许使时间域值与日历设置的新时间同步。 开始不重新计算该时间;为了重新计算时间和域,调用 complete 方法。
参见:
complete
getTime
public final Date getTime()
获得日历的当前时间。
返回值:
当前的时间。
setTime
public final void setTime(Date date)
用给定的 Date 设置 Calendar 的当前时间。
参数:
date - 给定的 Date。
getTimeInMillis
protected long getTimeInMillis()
获得日历的作为长整型的当前时间。
返回值:
当前时间,作为从开始时间的 UTC 毫秒值。
setTimeInMillis
protected void setTimeInMillis(long millis)
用给定的长整数设置 Calendar 的当前时间。
参数:
date - 新时间,从开始时间的 UTC 毫秒时间。
get
public final int get(int field)
获得给定时间域的值。
参数:
field - 给定的时间域。
返回值:
给定的时间域值。
internalGet
protected final int internalGet(int field)
获取给定时间域的值。 这是子类的一个内部快速时间域值 getter。
参数:
field - 给定的时间域。
返回值:
给定的时间域值。
set
public final void set(int field,
int value)
用给定的值设置时间域。
参数:
field - 给定的时间域。
value - 要设置的给定时间域的值。
set
public final void set(int year,
int month,
int date)
设置年、月、日期域的数值。 保留其它域上次的值。 如果不需要保留,首先调用 clear。
参数:
year - 用于设置 YEAR 时间域的值。
month - 用于设置 MONTH 时间域的值。 Month 值以 0 开始。 例如,0 代表一月。
date - 用于设置 DATE 时间域的值。
set
public final void set(int year,
int month,
int date,
int hour,
int minute)
设置年、月、日期、时和分域的数值。 保留其它域上次的值。 如果不需要保留,首先调用 clear。
参数:
year - 用于设置 YEAR 时间域的值。
month - 用于设置 MONTH 时间域的值。 Month 值以 0 开始。 例如,0 代表一月。
date - 用于设置 DATE 时间域的值。
hour - 用于设置 HOUR 时间域的值。
minute - 用于设置 MINUTE 时间域的值。
set
public final void set(int year,
int month,
int date,
int hour,
int minute,
int second)
设置年、月、日期、时、分和秒域的数值。 保留其它域上次的值。 如果不需要保留,首先调用 clear。
参数:
year - 用于设置 YEAR 时间域的值。
month - 用于设置 MONTH 时间域的值。 Month 值以 0 开始。 例如,0 代表一月。
date - 用于设置 DATE 时间域的值。
hour - 用于设置 HOUR 时间域的值。
minute - 用于设置 MINUTE 时间域的值。
second - 用于设置 SECOND 时间域的值。
clear
public final void clear()
将所有时间域值清零。
clear
public final void clear(int field)
将给定的时间域值清零。
参数:
field - 要清零的时间域。
isSet
public final boolean isSet(int field)
确定给定的时间域是否设置了数值。
返回值:
如果给定的时间域设置了数值则返回 true;否则返回 false。
complete
protected void complete()
填充时间域列表中所有未设置的域。
equals
public abstract boolean equals(Object obj)
比较该日历和指定的对象。 当且仅当参数不为 null 而是与该对象描述同一日历的 Calendar 对象,结果为 true。
参数:
obj - 比较的对象。
返回值:
如果对象相同则为 true,否则为 false。
覆盖:
类 Object 中的 equals
before
public abstract boolean before(Object when)
比较时间域记录。 等价于比较转换到 UTC 的结果。
参数:
when - 与该 Calendar 比较的 Calendar。
返回值:
如果当前时间在 Calendar when 的时间之前则为 true;否则为 false。
after
public abstract boolean after(Object when)
比较时间域记录。 等价于比较转换到 UTC 的结果。
参数:
when - 与该 Calendar 比较的 Calendar。
返回值:
如果该日历的当前时间在 Calendar when 的时间之后则为 true;否则为 false。
add
public abstract void add(int field,
int amount)
日期的计算功能。 按照日历的规则,将指定 ( 带符号的 ) 数量的时间添加到给定的时间域。 例如,从日历的当前时间减 5 ,可调用:
add(Calendar.DATE, -5)。
参数:
field - 时间域。
amount - 添加到该域的日期和时间的数量。
roll
public abstract void roll(int field,
boolean up)
时间域滚动功能。 在给定的时间域上 ( 向上 / 向下 ) 滚动一个单个的时间单元。 例如,为了将当前日期向上滚动一天,可调用:
roll(Calendar.DATE, true)。 当在年或 Calendar.YEAR 域滚动时,年值将在 1 和调用 getMaximum(Calendar.YEAR) 的返回值之间滚动。 当在月或 Calendar.MONTH 域滚动时,其它的域,例如日期,可能会发生冲突需要改变。 例如,将日期 01/31/96 滚动一月结果是 03/02/96。 当在小时域或 Calendar.HOUR_OF_DAY 域滚动,小时值将在范围 0 到 23 之间滚动,它以 0 开始。
参数:
field - 时间域。
up - 指明指定时间域值向上还是向下滚动。 如果向上滚动用 true ,否则用 false。
setTimeZone
public void setTimeZone(TimeZone value)
用给定的时区值设置时区。
参数:
value - 给定的时区。
getTimeZone
public TimeZone getTimeZone()
获得时区。
返回值:
与日历相应的时区对象。
setLenient
public void setLenient(boolean lenient)
指明对日期/时间的解释是否是宽松的。 在宽松的解释下,一个诸如 "February 942, 1996" 的日期将被看作与1996 年 2 月后的第 941 天等价。 在严格的解释下,这样的日期将引起抛出异常。
参见:
setLenient
isLenient
public boolean isLenient()
指明对日期/时间的解释是否是宽松的。
setFirstDayOfWeek
public void setFirstDayOfWeek(int value)
设置一周的第一天;例如在美国为 Sunday,在法国为 Monday。
参数:
value - 一周给定的第一天。
getFirstDayOfWeek
public int getFirstDayOfWeek()
获得一周的第一天;例如在美国为 Sunday,在法国为 Monday。
返回值:
一周的第一天。
setMinimalDaysInFirstWeek
public void setMinimalDaysInFirstWeek(int value)
设置该年中第一个星期所需要的最少的天数,例如,如果定义第一个星期包含一年第一个月的第一天,用值 1 调用该方法。如果它必须是一个完整的星期,使用 7 调用该方法。
参数:
value - 给定的一年中第一个星期要求的最少天数。
getMinimalDaysInFirstWeek
public int getMinimalDaysInFirstWeek()
获得该年中第一个星期所需要的最少的天数,例如,如果第一个星期定义为包含一年第一个月的第一天,getMinimalDaysInFirstWeek 返回 1。如果要求的最少天数必须是一个完整的星期,getMinimalDaysInFirstWeek 返回 7。
返回值:
一年中第一个星期要求的最少天数。
getMinimum
public abstract int getMinimum(int field)
获得给定时间域最小值。 例如对于格里高里 DAY_OF_MONTH 为 1。
参数:
field - 给定的时间域。
返回值:
给定时间域最小值。
getMaximum
public abstract int getMaximum(int field)
获得给定时间域最大值。 例如对于 Gregorian DAY_OF_MONTH 为 31。
参数:
field - 给定的时间域。
返回值:
给定时间域最大值。
getGreatestMinimum
public abstract int getGreatestMinimum(int field)
获得给定域变化时的最高的最小值。 否则与 getMinimum() 相同。对格里高里日历没有区别。
参数:
field - 给定的时间域。
返回值:
给定时间域最高的最小值。
getLeastMaximum
public abstract int getLeastMaximum(int field)
获得给定域变化时的最低的最大值。 否则与 getMaximum() 相同。例如对于格里高里日历 DAY_OF_MONTH 为 28。
参数:
field - 给定的时间域。
返回值:
定时间域最低的最大值。
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
与Date nowTime=new Date();取时间的区别
public String gettime(){
Calendar nowTime=Calendar.getInstance();
String strReturn="";
String strTemp="";
strReturn=String.valueOf(nowTime.get(Calendar.YEAR));
strReturn+="-"+(nowTime.get(Calendar.MONTH)>8?"":"0")+String.valueOf(nowTime.get(Calendar.MONTH)+1);
strReturn+="-"+(nowTime.get(Calendar.DATE)>9?"":"0")+String.valueOf(nowTime.get(Calendar.DATE));
strTemp=String.valueOf(nowTime.get(Calendar.HOUR)+((nowTime.get(Calendar.AM_PM)==1)?12:0));
if(strTemp.length()==1)
strTemp="0"+strTemp;
strReturn+=" "+strTemp;
strTemp=String.valueOf(nowTime.get(Calendar.MINUTE));
if(strTemp.length()==1)
strTemp="0"+strTemp;
strReturn+=":"+strTemp;
strReturn+=":"+String.valueOf(nowTime.get(Calendar.SECOND));
return strReturn;
}
SimpleDateFormat dFmt = new SimpleDateFormat("HHmmss");
int currentTime = Integer.parseInt(dFmt.format(new Date()));
当本地时间的时区不同时,两者就有分别了。具本有何区别,以后有时间再补上
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
造成这种问题的原因可能是:你的操作系统时区跟你JVM的时区不一致。
你的操作系统应该是中国的时区吧,而JVM的时区不一定是中国时区,你在应用服务器的Java虚拟机添加如下配置: -Dfile.encoding=UTF8 -Duser.timezone=GMT+08
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
用Calendar 吧。
方法
getInstance
public static synchronized Calendar getInstance()
用缺省时区和语言环境获得一个日历。
返回值:
一个 Calendar。
getInstance
public static synchronized Calendar getInstance(TimeZone zone)
用给定时区和缺省语言环境获得一个日历。
参数:
zone - 给定的时区。
返回值:
一个 Calendar。
getInstance
public static synchronized Calendar getInstance(Locale aLocale)
用缺省时区和给定语言环境获得一个日历。
参数:
aLocale - 给定的语言环境。
返回值:
一个 Calendar。
getInstance
public static synchronized Calendar getInstance(TimeZone zone, Locale aLocale)
用给定时区和给定语言环境获得一个日历。
参数:
zone - 给定的时区。
aLocale - 给定的语言环境。
返回值:
一个 Calendar。
getAvailableLocales
public static synchronized Locale[] getAvailableLocales()
获得安装 Calendars 的语言环境集合。
返回值:
安装 Calendars 的语言环境集合。
computeTime
protected abstract void computeTime()
将日历的时间域作为毫秒值转换为 UTC。
computeFields
protected abstract void computeFields()
将 UTC 作为毫秒值转换为时间域值。 允许使时间域值与日历设置的新时间同步。 开始不重新计算该时间;为了重新计算时间和域,调用 complete 方法。
参见:
complete
getTime
public final Date getTime()
获得日历的当前时间。
返回值:
当前的时间。
setTime
public final void setTime(Date date)
用给定的 Date 设置 Calendar 的当前时间。
参数:
date - 给定的 Date。
getTimeInMillis
protected long getTimeInMillis()
获得日历的作为长整型的当前时间。
返回值:
当前时间,作为从开始时间的 UTC 毫秒值。
setTimeInMillis
protected void setTimeInMillis(long millis)
用给定的长整数设置 Calendar 的当前时间。
参数:
date - 新时间,从开始时间的 UTC 毫秒时间。
get
public final int get(int field)
获得给定时间域的值。
参数:
field - 给定的时间域。
返回值:
给定的时间域值。
internalGet
protected final int internalGet(int field)
获取给定时间域的值。 这是子类的一个内部快速时间域值 getter。
参数:
field - 给定的时间域。
返回值:
给定的时间域值。
set
public final void set(int field,
int value)
用给定的值设置时间域。
参数:
field - 给定的时间域。
value - 要设置的给定时间域的值。
set
public final void set(int year,
int month,
int date)
设置年、月、日期域的数值。 保留其它域上次的值。 如果不需要保留,首先调用 clear。
参数:
year - 用于设置 YEAR 时间域的值。
month - 用于设置 MONTH 时间域的值。 Month 值以 0 开始。 例如,0 代表一月。
date - 用于设置 DATE 时间域的值。
set
public final void set(int year,
int month,
int date,
int hour,
int minute)
设置年、月、日期、时和分域的数值。 保留其它域上次的值。 如果不需要保留,首先调用 clear。
参数:
year - 用于设置 YEAR 时间域的值。
month - 用于设置 MONTH 时间域的值。 Month 值以 0 开始。 例如,0 代表一月。
date - 用于设置 DATE 时间域的值。
hour - 用于设置 HOUR 时间域的值。
minute - 用于设置 MINUTE 时间域的值。
set
public final void set(int year,
int month,
int date,
int hour,
int minute,
int second)
设置年、月、日期、时、分和秒域的数值。 保留其它域上次的值。 如果不需要保留,首先调用 clear。
参数:
year - 用于设置 YEAR 时间域的值。
month - 用于设置 MONTH 时间域的值。 Month 值以 0 开始。 例如,0 代表一月。
date - 用于设置 DATE 时间域的值。
hour - 用于设置 HOUR 时间域的值。
minute - 用于设置 MINUTE 时间域的值。
second - 用于设置 SECOND 时间域的值。
clear
public final void clear()
将所有时间域值清零。
clear
public final void clear(int field)
将给定的时间域值清零。
参数:
field - 要清零的时间域。
isSet
public final boolean isSet(int field)
确定给定的时间域是否设置了数值。
返回值:
如果给定的时间域设置了数值则返回 true;否则返回 false。
complete
protected void complete()
填充时间域列表中所有未设置的域。
equals
public abstract boolean equals(Object obj)
比较该日历和指定的对象。 当且仅当参数不为 null 而是与该对象描述同一日历的 Calendar 对象,结果为 true。
参数:
obj - 比较的对象。
返回值:
如果对象相同则为 true,否则为 false。
覆盖:
类 Object 中的 equals
before
public abstract boolean before(Object when)
比较时间域记录。 等价于比较转换到 UTC 的结果。
参数:
when - 与该 Calendar 比较的 Calendar。
返回值:
如果当前时间在 Calendar when 的时间之前则为 true;否则为 false。
after
public abstract boolean after(Object when)
比较时间域记录。 等价于比较转换到 UTC 的结果。
参数:
when - 与该 Calendar 比较的 Calendar。
返回值:
如果该日历的当前时间在 Calendar when 的时间之后则为 true;否则为 false。
add
public abstract void add(int field,
int amount)
日期的计算功能。 按照日历的规则,将指定 ( 带符号的 ) 数量的时间添加到给定的时间域。 例如,从日历的当前时间减 5 ,可调用:
add(Calendar.DATE, -5)。
参数:
field - 时间域。
amount - 添加到该域的日期和时间的数量。
roll
public abstract void roll(int field,
boolean up)
时间域滚动功能。 在给定的时间域上 ( 向上 / 向下 ) 滚动一个单个的时间单元。 例如,为了将当前日期向上滚动一天,可调用:
roll(Calendar.DATE, true)。 当在年或 Calendar.YEAR 域滚动时,年值将在 1 和调用 getMaximum(Calendar.YEAR) 的返回值之间滚动。 当在月或 Calendar.MONTH 域滚动时,其它的域,例如日期,可能会发生冲突需要改变。 例如,将日期 01/31/96 滚动一月结果是 03/02/96。 当在小时域或 Calendar.HOUR_OF_DAY 域滚动,小时值将在范围 0 到 23 之间滚动,它以 0 开始。
参数:
field - 时间域。
up - 指明指定时间域值向上还是向下滚动。 如果向上滚动用 true ,否则用 false。
setTimeZone
public void setTimeZone(TimeZone value)
用给定的时区值设置时区。
参数:
value - 给定的时区。
getTimeZone
public TimeZone getTimeZone()
获得时区。
返回值:
与日历相应的时区对象。
setLenient
public void setLenient(boolean lenient)
指明对日期/时间的解释是否是宽松的。 在宽松的解释下,一个诸如 "February 942, 1996" 的日期将被看作与1996 年 2 月后的第 941 天等价。 在严格的解释下,这样的日期将引起抛出异常。
参见:
setLenient
isLenient
public boolean isLenient()
指明对日期/时间的解释是否是宽松的。
setFirstDayOfWeek
public void setFirstDayOfWeek(int value)
设置一周的第一天;例如在美国为 Sunday,在法国为 Monday。
参数:
value - 一周给定的第一天。
getFirstDayOfWeek
public int getFirstDayOfWeek()
获得一周的第一天;例如在美国为 Sunday,在法国为 Monday。
返回值:
一周的第一天。
setMinimalDaysInFirstWeek
public void setMinimalDaysInFirstWeek(int value)
设置该年中第一个星期所需要的最少的天数,例如,如果定义第一个星期包含一年第一个月的第一天,用值 1 调用该方法。如果它必须是一个完整的星期,使用 7 调用该方法。
参数:
value - 给定的一年中第一个星期要求的最少天数。
getMinimalDaysInFirstWeek
public int getMinimalDaysInFirstWeek()
获得该年中第一个星期所需要的最少的天数,例如,如果第一个星期定义为包含一年第一个月的第一天,getMinimalDaysInFirstWeek 返回 1。如果要求的最少天数必须是一个完整的星期,getMinimalDaysInFirstWeek 返回 7。
返回值:
一年中第一个星期要求的最少天数。
getMinimum
public abstract int getMinimum(int field)
获得给定时间域最小值。 例如对于格里高里 DAY_OF_MONTH 为 1。
参数:
field - 给定的时间域。
返回值:
给定时间域最小值。
getMaximum
public abstract int getMaximum(int field)
获得给定时间域最大值。 例如对于 Gregorian DAY_OF_MONTH 为 31。
参数:
field - 给定的时间域。
返回值:
给定时间域最大值。
getGreatestMinimum
public abstract int getGreatestMinimum(int field)
获得给定域变化时的最高的最小值。 否则与 getMinimum() 相同。对格里高里日历没有区别。
参数:
field - 给定的时间域。
返回值:
给定时间域最高的最小值。
getLeastMaximum
public abstract int getLeastMaximum(int field)
获得给定域变化时的最低的最大值。 否则与 getMaximum() 相同。例如对于格里高里日历 DAY_OF_MONTH 为 28。
参数:
field - 给定的时间域。
返回值:
定时间域最低的最大值。
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
相关文章推荐
- JAVA中calendar,date,string 的相互转换和详细用法
- Java中的Date和Calendar的常用用法
- Java中的Date和Calendar的常用用法
- JAVA 的 Date、Calendar的常用用法
- JAVA中calendar,date,string 的相互转换和详细用法
- Java中的Date和Calendar的常用用法
- 黑马程序员——JAVA笔记——Date和Calendar的用法
- JAVA 的 Date、Calendar的常用用法
- Java中Calendar和Date的一些使用用法技巧
- java获得当前时间的前一天时间及Calendar 与 Date 的转换
- Java中Date各种相关用法
- Java Date 和 Calendar 实例
- java日期类型转换总结date timestamp calendar string
- java中date和calendar的区别
- 黑马程序员——Java语言基础:其他对象(System、Runtime、Date、Calendar、Math)
- JAVA date timezone 的用法
- java中日期的调用,Date和Calendar的转换
- Java Calendar,Date,DateFormat,TimeZone,Locale等时间相关内容的认知和使用(1) Calendar
- Java中SimpleDateFormat用法详解
- 1、java 之Calendar、Date、DateFormat类