android 日期时间使用哪个 calender date time

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 日期时间使用哪个 calender date time相关的知识,希望对你有一定的参考价值。

参考技术A 你说的是VBScript脚本语言吧 FormatDateTime(Date,vbShortDate) 短日期格式:比如2005-11-30 FormatDateTime(Date,vbLongDate) 长日期格式:比如2005年11月30日 FormatDateTime(Time,vbShortTime) 短时间格式:比如19:02 FormatDateTime(Time,vbLongTime) 长时间格式:比如19:02:24 参考技术B 1.Calendar
Calendar类有个类方法叫做getInstance()。这个方法返回一个Calendar子类的具体实现类的实例(Calendar是一个抽象类,它的实现类是GregorianCalendar),这个实例是时区敏感的,它会随着系统的时区变化而变化,同时,获得的这个实例已经被初始化,可以直接使用。获得Calendar的实例:

[java] view plain copy print?
Calendar rightNow = Calendar.getInstance();

Calender是一个抽象类,使用getInstance返回的是一个GregorianCalendar类的实例。
使用毫秒设置rightNow的时间:

[java] view plain copy print?
setTimeInMillis(111);

Calendar,Date,Time类之间的转换
Calender可以方便的和Date,Time等类做转换,比如,下面定义的方法可以把Date转为Calendar:

[java] view plain copy print?
/**
* Sets the time of this @code Calendar.
*/
public final void setTime(Date date)
setTimeInMillis(date.getTime());


反向转换: Date date = new Date(); date.setTime(before.getTimeInMillis());其实,这些转换都是使用毫秒进行的,毫秒就是一个长整数了,它不涉及格式的问题,因此Time,Date,Calendar都

可以直接使用毫秒相互转化,非常方便,例子如下:
Calendar->Time:

[java] view plain copy print?
Calendar calendar = Calendar.getInstance();
Time time = new Time();
time.set(calendar.getTimeInMillis());
Time->Calendar:

[java] view plain copy print?
Calendar calendar = Calendar.getInstance();
Time time = new Time();
calendar.setTimeInMillis(time.toMillis(true));
Time类的toMillis方法后面会有介绍。

lenient模式
Calendat类支持Lenient模式,所谓leninet模式就是容错模式,它的意思是说,如果用户设置的某些字段值超出了合理的范围,比如一月32号,那么Calender会自动把它转为2月1号。lenient模式可以通过setLenient(true/false)来使能或者关闭。如果leninet模式被关闭,那么当输入一个超出正常范围的值的时候,就会出发一个out_of_range的异常。
注意:Calender等时间类的月份都是从零开始,比我们习惯上的月份小一个月份,不知道为何要这么设计,之前就因为这一点跳过坑。

2.Time
android.text.format.Time包中的Time类是android平台的一个时间类,但是这个类目前已经不建议使用了,取而代之的是
GregorianCalendar类。Time和Calendar功能类似,据说Time对CPU的占有率更低。
创建一个Time:

[java] view plain copy print?
Time time = new Time();
这样创建的Time使用默认的时区,并且会被初始化为Jan 1, 1970.
设置time为当前时间:

[java] view plain copy print?
time.setToNow();
使用毫秒设置time的时间:

[java] view plain copy print?
time.set(1212);
toMillis(false)与toMillis(true)的区别:
其区别在于是否支持夏令时。

夏令时
关于夏令时,我的理解是这样的:为了节约能源,人为的把夏季的时间调的比实际的早,从而使人们早起的一种策略。举个例子来说,假如冬天早晨8点天才亮,而夏季7点天就亮了,如果我还是让大家8点起床,那岂不浪费了一个小时的阳光?所以我就把时间调早了一个小时,这样大家还是8点起床,但是其实你已经早起了一个小时了。使用这种欺骗的方式迫使人们早睡早起,从而达到解决能源的目的。一般夏令时就是在夏季的时候把时间调早一小时。

获取毫秒:
time.toMillis(false);或者time.toMillis(true);

3.SimpleDateFormat
[java] view plain copy print?
SimpleDateFormat extends DateFormat

它继承自DataFormat,除了具备DateFormat的所有功能为,它还添加了一些非常方便的功能。
在创建SimpleDateFormat的时候,我们就可以给它指定各种格式,比如:
SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yy");
然后就可以得到该格式的字符串:
String aaa = dateFormat.format(new Date());
format方法需要一个Date的实例,使用Calendar的时候,它的getTime()方法可以返回一个Date实例。
SimplerDateFormat可以使用'MM','dd','yy'构造任意格式,比如:MM-dd-yy,dd-MM-yy,dd/MM/yyyy等等,因此,使用它格式化时间

日期非常方便。
以下为一些参考格式:
[java] view plain copy print?
yyyy-MM-dd 1969-12-31
yyyy-MM-dd 1970-01-01
yyyy-MM-dd HH:mm 1969-12-31 16:00
yyyy-MM-dd HH:mm 1970-01-01 00:00
yyyy-MM-dd HH:mmZ 1969-12-31 16:00-0800
yyyy-MM-dd HH:mmZ 1970-01-01 00:00+0000
yyyy-MM-dd HH:mm:ss.SSSZ 1969-12-31 16:00:00.000-0800
yyyy-MM-dd HH:mm:ss.SSSZ 1970-01-01 00:00:00.000+0000
yyyy-MM-dd'T'HH:mm:ss.SSSZ 1969-12-31T16:00:00.000-0800
yyyy-MM-dd'T'HH:mm:ss.SSSZ 1970-01-01T00:00:00.000+0000

4.关于时区
在使用时间/日期类的时候,一定要注意时区的概念,Calendar类是一个时区敏感类,它会自动过去系统时区。但有些时候,我们可
能希望获取GTM或者UTC时间,如果使用Calender类的话需要减去时区偏移:
before.getTimeZone().getOffset(System.currentTimeMillis());
before是一个GregorianCalendar类的实例,通过它的getTimeZone方法可以获取一个TimeZone的实例,这个实例可以计算出时区偏移。
GTM和UTC可以认为是一个东西,他们都表示伦敦当地的时间。
Time类可以在构造的时候就指定它的时区,其构造函数定义如下:

[java] view plain copy print?
/**
* Construct a Time object in the timezone named by the string
* argument "timezone". The time is initialized to Jan 1, 1970.
* @param timezoneId string containing the timezone to use.
* @see TimeZone
*/
public Time(String timezoneId)
if (timezoneId == null)
throw new NullPointerException("timezoneId is null!");

initialize(timezoneId);


比如,创建一个时区为0的Time实例:
Time curTime = new Time("GTM+0");

以上是关于android 日期时间使用哪个 calender date time的主要内容,如果未能解决你的问题,请参考以下文章

Java 常用对象-Date类和Calender类

Java中Date和Calender类的使用方法

仅包含日期和月份的Android日期选择器

Java——Date/Calender

用java来判断当前日期是不是在 每月第一周周一及第三周周一,周一12:00至次日24:00中

在将mat Calender转换为ddmmyyyy表格时出错。