java 中calendar常见用法
来源:互联网 发布:网络pc蛋蛋赌博定罪 编辑:程序博客网 时间:2024/05/19 03:24
有空整理一下之前的东西,因为最近用到了calendar这个类,故做了一些整理.
1.时区和地区的差异
目前比较常用的是GMT和UTC,GMT官方叫做格林尼治时间,也是目前格林尼治天文台的官方时间,世界都比较认可的,UMT也叫世界协调时,是在 GMT基础上作了一些修改,前后差异不大。
地区的差异主要反映在中国普遍以礼拜一作为一个礼拜的开始,西方是以礼拜天作为一个礼拜的开始(这也解释了为什么Calendar.DAY_OF_WEEK返回的时间总是跟我们想要的差了那么一点,比如返回1,其实是礼拜天,而不是我们想象的礼拜一
2.Calendar对象的获取
方法一: Calendar cal=Calendar.getInstance() 该方法常用,直接获取了calendar的一个实例,返回的是当前的时间.
java8中的源码这么记录:
/**
* Gets a calendar using the default time zone and locale. The
* <code>Calendar</code> returned is based on the current time
* in the default time zone with the default locale.
*
* @return a Calendar.
*/
public static Calendar getInstance()
{
Calendar cal = createCalendar(TimeZone.getDefaultRef(), Locale.getDefault(Locale.Category.FORMAT));
cal.sharedZone = true;
return cal;
}
调取的就是这个静态方法,返回的是一个Calendar对象.
方法二: Calendar cal= new GregorianCalendar();该方法相对用的少
摘自源码中的代码:
*
* @see TimeZone
* @author David Goldsmith, Mark Davis, Chen-Lieh Huang, Alan Liu
* @since JDK1.1
*/
public class GregorianCalendar extends Calendar {
/*
* Implementation Notes
*
很明显,GregorianCalendar是Calendar的一个子类
3.通过Calendar设置时间
方法: void set(int field,int value);
public static String getTimeByCalendar(){
Calendar cal=Calendar.getInstance();
cal.set(Calendar.YEAR,2005);
cal.set(Calendar.MONTH,7);
cal.set(Calendar.DAY_OF_MONTH,12);
cal.set(Calendar.HOUR_OF_DAY,15);
cal.set(Calendar.MINUTE,23);
cal.set(Calendar.SECOND,45);
Date date=cal.getTime();
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String time=format.format(date);
return time;
}
这里需要解释一下: DAY_OF_MONTH:月中的天,也就是几号;
DAY_OF_WEEK:星期中的天,相当于礼拜几;
DAY_OF_YREA:一年中的第几天
HOUR_OF_DAY:此处需要注意的是get获取的是24小时制的时间值
此处的MONTH需要注意的是从0开始,我这边写的是7,其实是八月份。
其他的类推。
4.通过Calendar获取时间
方法: int get(int field):该方法可以获取Calendar中给定的时间分量对应的值
Calendar cal=Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY,0);
cal.set(Calendar.MINUTE,0);
cal.set(Calendar.SECOND,0);
System.out.println(cal.get(Calendar.HOUR_OF_DAY));
5通过Calendar修改时间值(往前或者往后推算)
方法: void add(int field,int value):当前的calendar加上给定的时间分量对应的值
Calendar calendar=Calendar.getInstance();
calendar.add(Calendar.DAY_OF_MONTH,5);
calendar.set(Calendar.MONTH,0);
此处需要注意的是,value的值正负决定是往前还是往后,这个自己可以测试一下
此处还有另外一方法: void roll(int field,int value):主要功能和add差不多,但是两者的差别还是有的:
代码如下:
public static void main(String[] args) {
Calendar calendar=Calendar.getInstance();
calendar.set(Calendar.MONTH,0);
calendar.roll(Calendar.MONTH,-1);
System.out.println(convertDateToString(calendar.getTime()));
}
public static String convertDateToString(Date date){
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String time=format.format(date);
return time;
}
输出的是:2017-12-27 01:42:36,是不是有点不对,我想要的时间应该是2016-12-27 01:42:36,
可见roll它只会变更当前位置的时间值,不会借位进行对应的加减
我们换成add试试看:
public static void main(String[] args) {
Calendar calendar=Calendar.getInstance();
calendar.set(Calendar.MONTH,0);
calendar.add(Calendar.MONTH,-1);
System.out.println(convertDateToString(calendar.getTime()));
}
public static String convertDateToString(Date date){
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String time=format.format(date);
return time;
}
ok,这个才是对的。
6.Calendar与Date之间的转换:
Calendar转换成Date
Calendar calendar=Calendar.getInstance();
Date date=calendar.getTime()
Date 转换成 Calendar
Calendar calendar=Calendar.getInstance();
Date date=new Date();
calendar.setTime(date);
ok!!!! 暂时总结到此吧!!! 温故而知新,可以为师矣!
- java 中calendar常见用法
- java中Calendar用法总结
- java中calendar的用法
- java中Calendar类用法
- Java中 Calendar类用法
- java.util中Calendar类的用法
- JAVA 中Calendar类一些常用法
- java中Calendar类的用法
- Calendar类的常见用法
- java---Calendar用法
- java时间用法calendar
- java calendar 时间用法
- JAVA,Calendar的用法
- Java-Calendar用法
- java 时间 Calendar 用法
- Java Calendar一般用法
- java中Map常见用法
- Java中Calendar和Date的一些使用用法技巧
- Mac下Exception 'yii\db\Exception' with message 'SQLSTATE[HY000] [2002] No such file or directory'
- Linux中的一些主要目录的作用
- 我的worktools集合们
- 【背包专题】H
- Linux的stat命令的使用
- java 中calendar常见用法
- [笔记分享] [Android] Android底层库和程序
- Struts2的文件上传与下载案例
- 对vue生命周期-钩子函数的理解
- 【算法】数组中出现次数超过一半的数字
- Java技术:Gif编码器(gifencoder)的实际应用(2)
- 斯特林数
- 【转】css中float left与float right的使用说明
- js中apply和Math.max()函数的问题?