日期类实际应用
Calendar
操作日期,并打印结果
获取当前时间
//默认返回的是当前日期
Calendar c=Calendar.getInstance();
long timeIn=c.getTimeInMillis();// 获取当前日期距离1970年的毫秒值
int year=c.get(Calendar.YEAR);
int month=c.get(Calendar.MONTH);//month从0开始
int day=c.get(Calendar.DAY_OF_MONTH);//月份中的天
int day2=c.get(Calendar.DAY_OF_WEEK);//礼拜的天(日开始)
int day3=c.get(Calendar.DAY_OF_YEAR);//
int hour=c.get(Calendar.HOUR_OF_DAY);
int minute=c.get(Calendar.MINUTE);
int second=c.get(Calendar.SECOND);
System.out.println(day2+" "+day3);
//(month<10)?"0"+month?String.valueOf(month)
String datestr1=String.format("%d年%s月%d日 %d:%d:%s\n", year,(month < 10) ? "0" + month : String.valueOf(month),day,hour,minute,
(second<10)?"0"+second:String.valueOf(second));
//三目运算目的是为了判断是否小于10,输出0*凑齐两位数
System.out.println(datestr1);
修改当前时间
c.add(Calendar.DAY_OF_MONTH, -1);//设置前一天,得到天数(参考下面习题)
//设置时间要年月日时分秒
c.set(3000, 8, 15, 18, 30, 1);
//设置过的时间要重新获取
year=c.get(Calendar.YEAR);
month=c.get(Calendar.MONTH);//month从0开始
day=c.get(Calendar.DAY_OF_MONTH);//月份中的天
hour=c.get(Calendar.HOUR_OF_DAY);
minute=c.get(Calendar.MINUTE);
second=c.get(Calendar.SECOND);
String datestr2=String.format("%d年%s月%d日 %d:%d:%s\n", year,(month < 10) ? "0" + month : String.valueOf(month),day,hour,minute,
(second<10)?"0"+second:String.valueOf(second));
System.out.println(datestr2);
设置过的时间记得重新获取,否则返回原来结果
如何实现Date类和Calendar类的相互转化
Calendar转换为Date**********************************
方法1:
Calendar c1=Calendar.getInstance();
Date d1=c1.getTime();
long time = d1.getTime();
方法2:
Calendar calendar=Calendar.getInstance();
calendar.getTime();
Date date=new Date(calendar.getTimeInMillis());
Date->Calendar**************************************
Date d2=new Date();
c1.setTimeInMillis(d2.getTime());
数据库日期和java日期相互转换
java.util.Date ud=new java.util.Date();
java.sql.Date sd=new java.sql.Date(ud.getTime());
java.sql.Date sd2=new java.sql.Date(1000L);
java.util.Date ud2=new java.util.Date();
注意:sql的date构造函数有参数(long time)
Date转化为字符串,字符串转化为Date
特别添加:(返回问价年最后一次被修改的时间)
("yyyy-MM-dd:HH:mm:ss")年月日时分秒
Date d=new Date(f.lastModified());//Date的构造方法
System.out.println(f.lastModified());// 返回long
//1566282192568
Date d=new Date(f.lastModified());
String s=new SimpleDateFormat("yyyy-MM-dd:HH:mm:ss").format(d);
System.out.println(s);
//将date转化为字符串,并输出
DateFormat df=new SimpleDateFormat("YYYY/MM/dd");
Date d5=new Date();
String da=df.format(d5);
System.out.println(da);
//将字符串转化为date
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
Date bir= sdf.parse(s);//抛出解析异常(最好抛出throw)****************
System.out.println(bir);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
关于日期的两道题:
输入当前年份,求取2月的天数
思路:利用日期,三月的前一天就是2月的天数
public static void main(String[] args) {
Calendar c=Calendar.getInstance();
String s=new Scanner(System.in).next();
int year=Integer.parseInt(s);
c.set(year, 2, 1);//外国的2月相当于3月
c.add(Calendar.DAY_OF_MONTH, -1);//设置三月的前一天,得到天数
System.out.println(c.get(Calendar.DAY_OF_MONTH));
}
输入未来的年月日,计算当前离未来还有多久?
public static void main(String[] args) throws ParseException {
String s=new Scanner(System.in).next();//输入未来日子
//将字符串转化为date
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date bir= sdf.parse(s);//字符串解析抛出异常
//System.out.println(bir);
long a1=bir.getTime();
long a2=new Date().getTime();
long a3=a1-a2;
System.out.println(a3/1000/60/60/24/365);//输出距离现在还有几多年