java时间处理,Date,DateFormat,Calendar

一,Date类:日期类

表示特定的瞬间,精确到毫秒,1秒=1000毫秒

1. 构造:

public Date();

无参构造,构造一个代表当前系统时间的Date对象

public Date(long time);

一指定毫秒创建一个代表当前系统时间的Date对象 毫秒值代表距离
标准时间(1970年01月01日 00:00:00)的毫秒值
把毫秒值转换为Date对象

2. 成员方法:

toString();

是Date类重写了Object类的toString 方法

返回值是 (星期几 月份 月份 时:分:秒 时区 年)

getTime();

把Date对象转换为毫秒值

返回值是当前时间距离标准时间有多少毫秒值

二,DateFormat类:日期格式化类

把date对象按指定格式转换为String
DateFormat是一个抽象类,不能直接使用它
一般使用SimpleDateFormat

1.构造

SimpleDateFormat(String pattern)

得到格式化时间

* y 年; M 年中的月份;
* w 年中的周数;
* W月份中的周数;
* D 年中的天数 ;
* d 月份中的天数 ;
* F 月份中的星期 ;
* E 星期中的天数 ;
* a Am/pm 标记;
* H 一天中的小时数(0-23);
* k 一天中的小时数(1-24);
* K am/pm 中的小时数(0-11)
* h am/pm 中的小时数(1-12)
* m 小时中的分钟数
* s 分钟中的秒数
* S 毫秒数
* z 时区
* Z 时区

2.成员方法

format(Date d);格式化时间

传入Date
返回已经格式化的字符串

parse(str);解析时间

传入需要解析的字符串
返回Date对象


图一

demo如图1所示:输出 :

2019年01月21日,19时 39分 53秒
Mon Jan 21 19:39:53 CST 2019
Mon Jan 21 19:39:53 CST 2019

三,Calendar类:日历类

Calendar是一个抽象类,不能直接使用
一般使用Calender的静态方法

1.静态方法

getInstance()

使用:Calendar.getInstance();

2.成员方法

get(Calendar.YEAR);获取时间

获取Calender中的某一个字段/成员变量

static int ALL_STYLES getDisplayNames的样式说明符, 表示所有样式的名称,如“1月”和“1月”。
static int AM AM_PM字段的值表示从午夜到中午之前的一天中的一段时间。
static int AM_PM 对于现场数 get和 set指示是否 HOUR是前或中午之后。
static int APRIL MONTH字段的价值 指示了格里高利和朱利安日历中的第四个月。
protected boolean areFieldsSet 如果 fields[]与当前设置的时间同步,则为真。
static int AUGUST MONTH领域的价值 指示了公历和朱利安日历中的第八个月。
static int DATE get和 set字段编号表示该月的日期。
static int DAY_OF_MONTH get字段编号和 set本月的日期。
static int DAY_OF_WEEK get字段编号和 set表示一周中的日期。
static int DAY_OF_WEEK_IN_MONTH get字段编号和 set当月的 set几的序号。
static int DAY_OF_YEAR get和 set字段编号, set本年度的日数。
static int DECEMBER MONTH字段的值表示公历和朱利安日历中的第十二个月。
static int DST_OFFSET get和 set字段编号 get夏令时偏移量(以毫秒为单位)。
static int ERA get和 set字段号表示时代,例如在儒略历中的AD或BC。
static int FEBRUARY MONTH字段的价值表示今年第二个月在公历和朱利安日历。
static int FIELD_COUNT get和 set的不同字段的数量。
protected int[] fields 该日历的当前设置时间的日历字段值。
static int FRIDAY DAY_OF_WEEK字段的值表示周五。
static int HOUR get和 set字段编号, get上午或下午的小时。
static int HOUR_OF_DAY get字段编号和 set当天的小时数。
protected boolean[] isSet 说明是否设置日历的指定日历字段的标志。
protected boolean isTimeSet 如果那么那么 time的值是有效的。
static int JANUARY MONTH字段的价值表示今年首次在公历和朱利安日历。
static int JULY MONTH字段的值代表了 公历和朱利安日历中的第七个月。
static int JUNE MONTH字段的价值 指示了公历和朱利安日历中的第六个月。
static int LONG getDisplayNamegetDisplayNames相当于 LONG_FORMAT的样式说明
static int LONG_FORMAT getDisplayNamegetDisplayNames的样式说明 表示用于格式的长名称。
static int LONG_STANDALONE 一个 getDisplayNamegetDisplayNames的样式说明 表示一个独立使用的长名称,例如月份名称作为日历头。
static int MARCH MONTH字段的值代表了 公历和朱利安日历中的第三个月。
static int MAY MONTH领域的价值 指示了公历和朱利安日历中的第五个月。
static int MILLISECOND get和 set字段号表示 get内的 set数。
static int MINUTE get和 set字段编号表示小时内的分钟。
static int MONDAY DAY_OF_WEEK字段的值表示星期一。
static int MONTH get和 set字段号表示月份。
static int NARROW_FORMAT getDisplayNamegetDisplayNames的样式说明 表示用于格式的窄名称。
static int NARROW_STANDALONE getDisplayNamegetDisplayNames的样式说明 独立地表示一个狭义的名称。
static int NOVEMBER MONTH领域的价值 指示了公历和朱利安日历中的第十一个月。
static int OCTOBER MONTH字段的价值表示在公历和朱利安日历中的一年中的第十个月。
static int PM AM_PM字段的值表示从中午到午夜之前的一天中的一段时间。
static int SATURDAY DAY_OF_WEEK字段的值表示星期六。
static int SECOND get和 set字段编号表示分钟内的第二个。
static int SEPTEMBER MONTH字段的值代表了 公历和朱利安日历中的第九个月。
static int SHORT getDisplayNamegetDisplayNames的样式说明 相当于 SHORT_FORMAT
static int SHORT_FORMAT getDisplayNamegetDisplayNames的样式说明 表示用于格式的短名称。
static int SHORT_STANDALONE 一个用于 getDisplayNamegetDisplayNames的样式说明 表示一个简单的名称,例如一个月缩写作为日历头。
static int SUNDAY DAY_OF_WEEK字段的值表示星期天。
static int THURSDAY DAY_OF_WEEK字段的值表示星期四。
protected long time 这个日历的当前设定时间,以1970年1月1日,格林尼治标准时间0:00:00之后的毫秒表示。
static int TUESDAY DAY_OF_WEEK字段的值表示周二。
static int UNDECIMBER MONTH字段的值表示一年的第十三个月。
static int WEDNESDAY DAY_OF_WEEK字段的值表示周三。
static int WEEK_OF_MONTH get和 set字段编号, set当月的周数。
static int WEEK_OF_YEAR get和 set字段编号, set本年度的周数。
static int YEAR get现场编号和 set表示年份。
static int ZONE_OFFSET get和 set字段编号, get GMT以毫秒为 get的原始偏移量。
add(int field, int amount); 调整时间

给定的字段添加指定的值如demo2
注意:添加天数,月份,年等等 该方法会自动计算

图二

输出结果:

java.util.GregorianCalendar[time=1548078976051,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2019,MONTH=0,WEEK_OF_YEAR=4,WEEK_OF_MONTH=4,DAY_OF_MONTH=21,DAY_OF_YEAR=21,DAY_OF_WEEK=2,DAY_OF_WEEK_IN_MONTH=3,AM_PM=1,HOUR=9,HOUR_OF_DAY=21,MINUTE=56,SECOND=16,MILLISECOND=51,ZONE_OFFSET=28800000,DST_OFFSET=0]
2019年01月21日
2019年01月23日
set(int field, int value)设置时间
//设置时间 
calendar.set(Calendar.YEAR,1000);
calendar.set(Calendar.DAY_OF_MONTH,10); 
calendar.set(Calendar.MONTH,100);
System.out.println(getDate(calendar));

输出:1008年5月10日

三,时间类的转换

Calendar 转化 String

Calendar calendar= Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String dateStr = sdf.format(calendar.getTime());

String 转化Calendar

String str="2019-1-21";
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
Date date =sdf.parse(str);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);

Date 转化String

SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
String dateStr=sdf.format(new Date());

String 转化Date

String str="2019-1-21";
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
Date date= sdf.parse(str);

Date 转化Calendar

Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());

Calendar转化Date

Calendar calendar = Calendar.getInstance(); 
Date date =calendar.getTime();
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,014评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,796评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,484评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,830评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,946评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,114评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,182评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,927评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,369评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,678评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,832评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,533评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,166评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,885评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,128评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,659评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,738评论 2 351

推荐阅读更多精彩内容