下面的代码很长 但是列举了Date类和格式化输出的具体例子,由于有些转换字母很多,可以参照API查看,下面的代码都是可以2-4行分开看,没有连贯性,都是多个小例子
Date date = new Date();
long time = date.getTime(); //获得与1970年相差年数转换成毫秒
![这是一张printf方法关于格式化日期的字母截图,详情可查看API](http://img.blog.csdn.net/20160808204025835)
System.out.printf("%tF %<tT %<tA" ,date); //日期 时间 星期 “< ”表示继续使用前边的变量
System.out.println(time/1000/60/60/24/365); //显示当前时间与1970.1.1之间的相差时间 毫秒计算 转换成年
String da = String.format("%tF", date); //String类的format()方法实现格式化,获得格式化后的字符串
System.out.println(da);
//利用DateFormat是抽象类,无法通过new创建对象,但是可以利用静态方法获得,调用format()方法实现格式化。
DateFormat df = DateFormat.getDateInstance(); //获取日期格式器
String s = df.format(new Date());
System.out.println(s); //显示效果为年-月-日 不带前置0
df = DateFormat.getInstance(); // SHORT 风格的默认日期/时间格式器
s = df.format(new Date());
System.out.println(s); //年份简写,月,日不带前置0 12小时制时间 带上下午提示
df = DateFormat.getDateTimeInstance(); //获取日期/日期格式器
s = df.format(new Date());
System.out.println(s); //输出无前置日期,24小时制时间
df = DateFormat.getTimeInstance(); //获得时间格式器;
s = df.format(new Date());
System.out.println(s); //24小时制时间
//基本上只有利用格式控制符,日期才带有前置0
//将指定字符转换成Date对象,日期格式器
String str = "2016-8-8";
Date date1 = DateFormat.getDateInstance().parse(str); //获取日期格式器,解析文本的日期,给定的字符序列必须为 yyyy-mm-dd或yyyy-m-d;
System.out.println(date1);
//日期/时间格式器
String str1 = "2016-8-9 17:25:26";
Date date2 = DateFormat.getDateTimeInstance().parse(str1); //时间日期格式器 序列 yyyy-m-d h:M:s
System.out.println(date2);
//short风格,时间/日期格式器
String str2 = "2016-8-10 上午12:45";
Date date3 = DateFormat.getInstance().parse(str2); //格式 yyyy-m-d(有一个空格) (上午/下午)h:M 12小时制时间 也可以使 yy-m-d ...同前面
System.out.println(date3);
//时间格式器
String str3 = "12:25:25";
Date date4 = DateFormat.getTimeInstance().parse(str3); //格式 h:M:s 24小时制时间
System.out.println(date4);
System.out.println("=======================================================================");
![SimpleDateFormat的介绍关于解析字符的列举](http://img.blog.csdn.net/20160808204715031)
//DateFormat 子类 SimpleDateFormat 测试 对比DateFormat 转换更灵活,每个字母都可以代表独立的转换
SimpleDateFormat sdf = new SimpleDateFormat("我希望这样输出日期y-M-d h:m:s");
String str4 = sdf.format(new Date());
System.out.println(str4); //结果: 我希望这样输出日期2016-8-8 8:10:27 2个M和d只是多了前置的0 起到完整写法和简写的区别
//例如2016-08-08 其他字母都是这样hh:mm:ss 就是08:10:27
//求当天是当年中的第几天
SimpleDateFormat sdf1 = new SimpleDateFormat("今天是一年中的第D天");
String str5 = sdf1.format(new Date());
System.out.println(str5); //结果 : 今天是一年中的第221天 可以看到这个类解析日期更加灵活,怎么配置他就怎么解析
System.out.println("=============================================================================");
//将字符串还原成Date对象
String str6 = "北京时间7月20日15点30分";
SimpleDateFormat sdf2 = new SimpleDateFormat("北京时间M月d日H点mm分");
Date d = sdf2.parse(str6); //构造器中参数给的解析模式要求和给定字符序列相同,只是把要解析的地方用字母写出来
System.out.println(d); //结果:Mon Jul 20 15:30:00 CST 1970
String str7 = "7-20"; //7月20
SimpleDateFormat sdf3 = new SimpleDateFormat("MM-dd"); //或M-d MM-d都行
Date d2 = sdf3.parse(str7);
System.out.println(d2);
}