java 日期_Java中的日期操作

Date :         getTime() 、setTime()

SimpleDateFormate :   Formate(Date)、 parse(String s)

Calendar :      getInstance()、set() 、get()、getActualMaximum()、add()、

gettime()、setTime(Date)、

字符串、Date、Calendar之间的转换

---------------------------------------淫荡分隔------------------------------------------------

Date及其常用API

Date简介

Java中的时间使用标准类库的java.util.Date,其表示特定的瞬间,精确到毫秒。是用距离一个固定时间点的毫秒数(可正可负,long类型)表达一个特定的时间点。

固定的时间点叫纪元(epoch),是UTC时间1970年 1月 1日 00:00:00

UTC(Universal Time Coordinated世界调整时间)与GMT(Greenwich Mean Time格林威治时间)一样,是一种具有实际目的的科学标准时间。

因为Date的设计具有"千年虫"以及"时区"的问题,所以Date中的大部分方法已经不建议使用了,它们都被java.util.Calendar类所取代

importjava.util.Date;/*** 测试Date 的getTime与setTime

*@paramargs*/

public static voidmain(String[] args) {

Date date=newDate();

System.out.println(date);/** 计算明天此刻的时间*/

long time =date.getTime();

time= time+24*60*60*1000;

date.setTime(time);

System.out.println(date);

}

SimpleDateFormat

SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。

简单的说,SimpleDateFormat就是根据一个特定的日期格式在字符串与Date之间相互转换。那么这个特定的日期格式是怎样定义的呢?下面我们来学习一下如何定义日期格式字符串。

作用: 在日期格式字符串与日期之间相互转换

ff5a3ac4f3cfa562662ac4e59dbd1e46.png

在日期格式字符串中,出现的非关键字符都原意输出

需要掌握的方法

将Date格式化为String    String format(Date d)

将String解析为Date    Date  parse(String s)

/*** 通过SimpleDateFormate将字符转化为date

*@authorAdministrator

**/

classTestSimpleDate{public static void main(String[] args) throwsParseException {

String StrD="2015-04-20 11:22:45";

SimpleDateFormat sdfd=new SimpleDateFormat("yyy-MM-dd HH:mm:ss");

Date dat=sdfd.parse(StrD);

System.out.println(dat);

}

}public classShenri {/*** 1.获取用户输入的生日

* 2.将其转换为Date

* 3.创建一个Date用于表示当前系统时间

* 4.用当前系统时间的毫秒值减去出身当天的毫秒值

* 5,将差初一一天的毫秒值

* 6.商就是经过的天数

*@paramargs

*@throwsParseException*/

public static void main(String[] args) throwsParseException {

Scanner scanner=newScanner(System.in);

System.out.println("以1992-05-08格式输入生日:");

String shengri=scanner.nextLine();

SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");

Date date=sdf.parse(shengri);

Date now= newDate();longcha;

cha= now.getTime()-date.getTime();

System.out.println(cha);intday;

day= (int) (cha/(3600*24*1000));

System.out.println("恭喜你活了"+day+"天");

}

}

Calendar类

java.util.Calendar 类用于封装日历信息,其主要作用在于其方法可以对时间分量进行运算。

Calendar是抽象类,其具体子类针对不同国家的日历系统,其中应用最广泛的是GregorianCalendar(格里高里历,即通用的阳历),对应世界上绝大多数国家/地区使用的标准日历系统。

1. getInstance()方法

Calendar是抽象类,其提供了一个工厂方法:Calendar getInstance()。该方法可以根据当前系统所在地区获取一个适当的Calendar的子类实现。

在实际开发中,也推荐使用该方法来实例化Calendar的对象。

/*** Calendar 用于操作时间的类

* 操作: 设置 获取 计算时间

*@authorAdministrator*/

public classTestCalendar {public static voidmain(String[] args) {/** 使用Calendar提供的静态方法获取适当的实例

* 默认创建calendar表示的是当前系统的时间*/Calendar calendar =Calendar.getInstance();/** 查看对象具体的类型

* obj.getClass().getName()*/String className=calendar.getClass().getName();

System.out.println(className);//输出的是java.util.GregorianCalendar 的toString返回值

System.out.println(calendar);/** calendar 定义了一个方法

* Date getTime()

* 返回一个描述改Calendar表示的时间的Date对象

**/Date date=calendar.getTime();

System.out.println(date);

}

}

2. 设置日期及时间分量

Calendar提供了一种通用的设置时间的方式:

void set(int field,int value)

该方法可以通过对不同的时间分量分别设置不同的值。Calendar对不同的时间分量提供了相应的常量,我们在使用set方法设置时,第一个参数就应当使用对应的常量作为时间分量。

public classTestCalendar {/***@paramargs*/

public static voidmain(String[] args) {/** 设置时间使用Calendar提供的方法

* void set (int field,int value)

* 对给定的时间分量设定给定的值

*

* 对Calendar 设置时间为2013-12-25*/Calendar calendar=Calendar.getInstance();

calendar.set(Calendar.YEAR,2013);

calendar.set(Calendar.MONTH,11);/** 对于几号而言 calendar 提供了两个时间分量

* 意义完全相同,任选其一

* DAY_OF_MONTH

* DATE*/calendar.set(Calendar.DATE,25);

calendar.set(Calendar.DAY_OF_MONTH,25);/** 超过该时间分量允许的最大值后,会向上进位

* 日想月进位 月向年进位*/calendar.set(Calendar.DATE,32);

System.out.println(calendar.getTime());

}

}

3. 获取时间分量对应的值

Calendar提供了一种通用的获取时间分量的方式:

int get(int field)

该方法可以通过对不同的时间分量获取相应的值。Calendar对不同的时间分量提供了相应的常量,我们在使用get方法获取时,参数就应当使用对应的常量作为时间分量。

/*** 设置为2014-04-23

*@authorAdministrator

**/

classTestGet{publicTestGet() {

Calendar calendar_get=Calendar.getInstance();

calendar_get.set(Calendar.YEAR,2014);

calendar_get.set(Calendar.MONTH,3);

calendar_get.set(Calendar.DATE,23);/** 获取今天是周几

* int get(int field)

* 获取给定的时间分量所对应的值

* 美国人 周日为一周的第一天*/System.out.println("今天是周"+(calendar_get.get(Calendar.DAY_OF_WEEK)==1?"日":calendar_get.get(Calendar.DAY_OF_WEEK)-1));/** 获取时间 几点

* HOUR 12小时

* HOUR_OF_DAY 24小时制*/System.out.println(calendar_get.get(Calendar.HOUR_OF_DAY)+"点"+ calendar_get.get(Calendar.MINUTE)+"分"+calendar_get.get(Calendar.SECOND)+"秒");/** 查看今年过去多少天了

* DAY_OF_YEAR*/System.out.println("已经过了"+calendar_get.get(Calendar.DAY_OF_YEAR)+"天");

}

}

/*** 获取某个时间分量所容许的最大值*/

classTestCalendarDemo4{public static voidmain(String[] args) {/** int

* 获取给定时间分量所允许的最大值*/

//这个月最多多少天

Calendar calendar_max=Calendar.getInstance();int days =calendar_max.getActualMaximum(Calendar.DAY_OF_MONTH);

System.out.println(days);//今年总共多少天

days =calendar_max.getActualMaximum(Calendar.DAY_OF_YEAR);

System.out.println(days);

}

}

/*** 输出今年每月的最后一天

* 就是每月多少天

*@authorAdministrator

**/

classTestMaxmooth{public static voidmain(String[] args) {

Calendar calendar_last=Calendar.getInstance();//for(int i=Calendar.JANUARY;i<=Calendar.DECEMBER;i++){}

for(int i=0;i<12;i++){

calendar_last.set(Calendar.MONTH,i);

System.out.println(i+1+"月总共:"+calendar_last.getActualMaximum(Calendar.DAY_OF_MONTH));

}

}

}

/**

add使用*/

classCalendar_add{public static voidmain(String[] args) {

Calendar calendaradd=Calendar.getInstance();

System.out.println(calendaradd.getTime());/** 当前日期加1*/calendaradd.add(Calendar.DAY_OF_YEAR,1);

System.out.println(calendaradd.getTime());//加两年

calendaradd.add(Calendar.YEAR, 2);

System.out.println(calendaradd.getTime());//加到32 自动切换

calendaradd.add(Calendar.DAY_OF_YEAR, 11);

System.out.println(calendaradd.getTime());//减去12小时

calendaradd.add(Calendar.HOUR_OF_DAY, 12);

System.out.println(calendaradd.getTime());

}

}

字符串 date 和Calendar 之间如何转换的/*** 测试Calendar 的setTime*/

classTestsettime{public static void main(String[] args) throwsParseException {/** void setTime(Date date)

* 使当前Calendar对象描述给定的Date对象所表示的日期

*

* 输入女朋友的今年的生日 ,

* 输出明年女朋友的生日是星期几

*

* 1.创建Scanner用于获取用户输入的日期

* 2.将日期通过SimpleDateFormate转换为Date

* 3.将date 转换为Calendar

* 4.将Calendar加上1年

* 5.在通过Calendar 获取对应的Date

* 6.通过SimpleDateFormate输出成目标格式

**/Scanner scanner= newScanner(System.in);

System.out.println("以2012-01-02 格式输入女朋友的生日");

String shengri=scanner.nextLine();//2

SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");

作用: 将字符串转换为date

Date date=sdf.parse(shengri);

System.out.println(date);

Calendar calengril=Calendar.getInstance();

作用:将date转换为calendar

calengril.setTime(date);

calengril.add(Calendar.YEAR,1);

calengril.get(Calendar.DAY_OF_WEEK);

作用:将calendar 转换为date

date=calengril.getTime();

作用:将date转换为字符串

System.out.println(sdf.format(date)+"星期"+calengril.get(Calendar.DAY_OF_WEEK-1));

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值