DateFormat 和 SimpleDateFormat
示例(时间格式的书写)
package cn.date; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class Test02 { public static void main(String[] args) { DateFormat d=new SimpleDateFormat("yyyy年-MM月-dd日 hh:mm:ss"); //设置时间格式 Date s=new Date(); //当前时间 String str=d.format(s); //将时间对象按照格式化字符串 ,转换为字符串 System.out.println(str); String str2="1998-5-20"; DateFormat dd=new SimpleDateFormat("yyyy-MM-dd"); try { Date ss=dd.parse(str2); //将字符串解析为带有固定格式的字符串,并把它给Date对象。注意:格式要一致 System.out.println(ss); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
结果
Calendar (日历)(日期类)(日期加法)
示例
package cn.date; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; public class TestClendar { public static void main(String[] args) { Calendar c=new GregorianCalendar(); //Calendar是抽象类,不能建对象,要用到他的子类。 c.set(2019, 7,15,18,07,36); //设置日期 Date d=c.getTime(); //得到设定日期 ,没有设值的话,返回当前时间。 // c.setTime(new Date()); System.out.println(d); // System.out.println(c.get(Calendar.YEAR)); //加法 c.add(Calendar.YEAR, 30); Date m=c.getTime(); System.out.println(m); } }
结果
可视化的日历 (挺有意思)
代码示例:
package cn.date; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.Scanner; public class Visual { public static void main(String[] args) { System.out.println("请输入日期(按格式:2019-5-6):"); Scanner scanner=new Scanner(System.in); //输入日期,按格式 ------ System.in输入流 String temp=scanner.nextLine(); //返回输入的结果,给temp变量。 // String temp="2019-2-15"; 这是写死的 DateFormat dateformat=new SimpleDateFormat("yyyy-MM-dd"); try { Date d= dateformat.parse(temp); //将字符串解析为带有固定格式的字符串,并把它给Date对象。 Calendar calendar=new GregorianCalendar(); calendar.setTime(d); int day=calendar.get(Calendar.DATE); //获取到当前日期 15; // System.out.println(day); //打印 calendar.set(Calendar.DATE, 1); //把日期设成2019-2-1,接着查看他是第几天,从而确定它在日历中的位置 // System.out.println(calendar.get(Calendar.DAY_OF_WEEK)); //打印查看2月1日是这周的第几天。6 表示星期五,则星期五为2月1号这一天 // System.out.println(calendar.getActualMaximum(Calendar.DATE)); //这个月的最多天数 int MaxDay=calendar.getActualMaximum(Calendar.DATE); //把天数提取出来 System.out.println("日\t一\t二\t三\t四\t五\t六"); for(int i=1;i<calendar.get(Calendar.DAY_OF_WEEK);i++) { //打印前面的空格,6的话前面要打印5个空格 System.out.print("\t"); } //可视化日历 for(int i=1;i<=MaxDay;i++) { if(i==day) { System.out.print("*"); //如果打印到当天就打印个星星“*” } System.out.print(i+"\t"); int w=calendar.get(Calendar.DAY_OF_WEEK); //得到2019-2-2是这周的第几天 if(w==Calendar.SATURDAY) { //如果是这周的第七天,也就是周六,则换行。 System.out.print("\n"); } calendar.add(Calendar.DATE, 1); //日期加一,变为2019-2-2; } } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
打印结果