java日期操作~~
java的时间用Date类表示
SimpleDateFormat
日期与字符串相互转
016-09-06 09:30:25
yyyy-MM-dd HH:mm:ss
类似于正则,让他以这些字符为标准转换
将Date转换为 2016-09-06 09:30:25 这种日期:
如代码:
public static void main(String[] args) {
// TODO Auto-generated method stub
Date date = new Date();
//输出Date默认的toString方法的返回值
System.out.println(date);
/*
* 希望输出的格式是:
* 2016-09-06 09:30:25
* yyyy-MM-dd HH:mm:ss
*/
//先创建个字符串是用来定义日期格式
String dateformat ="yyyy-MM-dd HH:mm:ss E a";
//创建个SimpleDaeFormat 对象,传入日期格式
SimpleDateFormat sad = new SimpleDateFormat(dateformat);
//对象有个format方法,传入创建的时间对象,返回字符串
String str = sad.format(date);
System.out.println(str);
}
将 2016-09-06 09:30:25 日期装换为 Date对象
代码:
public static void main(String[] args) throws ParseException {
// TODO Auto-generated method stub
//要转换为Date的字符串
String str = "2008-08-08 20:08:08";
//创建个匹配要转换字符串时间格式的字符串
String dateformat = "yyyy-MM-dd HH:mm:ss";
//SimpleDateFormat 用传入的字符串时间格式解析字符串,然后创建对象
SimpleDateFormat asd = new SimpleDateFormat(dateformat);
//调用SimpleDateFormat的方法parse转换为Date,那么就要创建Date对象
//会产生异常~~抛出
Date date = asd.parse(str);
System.out.println(date);
}
例子:输入生日计算活了多少天:
代码:
public static void main(String[] args) throws ParseException {
// TODO Auto-generated method stub
/*
* 输入一个生日,输出到今天为止一共活了多少天
* 输入生日,转为Date,获取系统的Date,获取他们的毫秒值
* 然后求差,用该值除以一天的毫秒值,得出天数
*
*/
System.out.println("请输入你的生日");
System.out.println("格式如:2016-09-06");
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
//创建日期格式字符串
String dateformat = "yyyy-MM-dd";
SimpleDateFormat asd = new SimpleDateFormat(dateformat);
//将输入的生日转换为Date对象
Date srdate = asd.parse(input);
long srss = srdate.getTime();
//获取系统现在时间
Date xzdate = new Date();
long xzss = xzdate.getTime();
//计算差
long scdate = (xzss-srss)/(24*60*60*1000);
System.out.println("骚年,你已经活了:"+scdate+"天");
}
Calender
本身是抽象类
操作时间 计算时间
public static void main(String[] args) {
// TODO Auto-generated method stub
//创建一个Calendar,获取的是阳历
Calendar calendar = Calendar.getInstance();
System.out.println(calendar);
//calendar的getTime获取的是Date
Date date = calendar.getTime();
System.out.println(date);
//用SimpleDateForm来定义日期格式
String dateform = "yyyy-MM-dd";
SimpleDateFormat asd = new SimpleDateFormat(dateform);
//将日期定义为指定格式
String str= asd.format(date);
System.out.println(str);
}
让Calendar表示的是当前Date所表示的时间
public static void main(String[] args) {
//让Calendar表示的是当前Date所表示的时间
Date date = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
}
Calendar设置时间
public static void main(String[] args) {
// TODO Auto-generated method stub
Calendar calendar = Calendar.getInstance();
/*
* 希望表示2008-08-30 10:22:33
*
*/
calendar.set(Calendar.YEAR, 2008);
//!!Calendar的月份 是从0开始的!!!8月就写7或者Calendar.AUGUST
calendar.set(Calendar.MONTH, Calendar.AUGUST);
calendar.set(Calendar.DATE, 30);
calendar.set(Calendar.HOUR_OF_DAY, 10);
calendar.set(Calendar.MINUTE, 22);
calendar.set(Calendar.SECOND,33);
//要将calendar要转换为Date,不然不容易看
Date date = calendar.getTime();
System.out.println(date);
}
获取Calendar的时间
注意星期,月份的问题。
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
//获取年
int year = calendar.get(Calendar.YEAR);
//获取月,因为月是从0开始的,所以要加1
int month = calendar.get(Calendar.MONTH)+1;
int date = calendar.get(Calendar.DATE);
System.out.println(year+"-"+month+"-"+date);
int w = calendar.get(Calendar.DAY_OF_WEEK);
//星期天返回的是1,不是的话就减1返回
System.out.println("星期:"+(w==1?7:w-1));
}
用Calendar计算时间
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
//看15天以后,想做减法的话加负数
//加天的话,要是一年中天,因为有可能超过月份,星期等
calendar.add(Calendar.DAY_OF_YEAR, 15);
Date date = calendar.getTime();
System.out.println(date);
}
计算三个月后的十天后的周三是几号
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MONTH, 3);
calendar.add(Calendar.DAY_OF_YEAR, 10);
//设置周三,那么就是周三那天了,0是周天那么周三就是4
calendar.set(Calendar.DAY_OF_WEEK,4);
System.out.println(calendar.getTime());
}
获取某个时间分量所允许的最大值
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
//这个月总共多少天,当前月所运行的最大天数,这个方法,传什么返回什么所允许的最
int days= calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
System.out.println(days);
}