package demo.api;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
class DateTest {
public static void main(String[] args) throws ParseException {
dateDemo();//Date方法演示
// formatDemo();//日期格式化方法
// calendarDemo();//Calendar方法
//datePractice();//日期练习:实现获得两个日期相减得到的天数
// stringForwardDate();//String转为日期,读出还是String
}
//String转为日期,读出还是String
private static void stringForwardDate() throws ParseException {
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd : HH:mm:ss");//此格式对应MySQL的datetime类型
//注意: 指定的字符串格式必须要与SimpleDateFormat的模式要一致。
String birthday = "2000-12-26 : 11:29:08";
Date date = sdf2.parse(birthday);//将字符串转为指定date日期对象
System.out.println("指定格式的当前时间:" + sdf2.format(date));//将日期对象转换为指定格式的字符串
}
//Date方法演示
private static void dateDemo() {
Date date = new Date(); //获取当前的系统时间转化为日期对象
Date date2 = new Date(966666666666l); //获取自1970以来XXX毫秒后时间。
System.out.println("当前时间:" + date + "\n1970后来时间:" + date2);
System.out.println("日期对象转毫秒:" + date2.getTime());
System.out.println("date2是否在date日期之后:" + date.after(date2));
System.out.println("date2是否在date日期之前:" + date.before(date2));
System.out.println("比较两个日期是否相等:" + date.equals(date2));
System.out.println("比较日期顺序:" + date.compareTo(date2));//大于返回1,小于返回-1,等于返回0
//DateUtils.isSameDay(date,date2);//判断两个日期是否为同日
}
//日期格式化方法 DateFormat SimpleDateFormat
private static void formatDemo() throws ParseException {
Date date = new Date(); //获取当前的系统时间转化为日期对象
//日期格式化类 DateFormat
DateFormat dateFormat = DateFormat.getDateInstance();//获取日期格式器 默认格式化风格
System.out.println("日期\n默认格式:" + dateFormat.format(date));//2018年5月26日
dateFormat = DateFormat.getDateInstance(DateFormat.LONG);//获取日期格式器 给定格式化风格
System.out.println("指定格式:" + dateFormat.format(date));//2018年5月26日
;
dateFormat = DateFormat.getDateInstance(DateFormat.FULL);
System.out.println("指定格式2:" + dateFormat.format(date));//2018年5月26日星期六
dateFormat = DateFormat.getDateInstance(DateFormat.DATE_FIELD);
System.out.println("指定格式3:" + dateFormat.format(date));//2018/5/26
dateFormat = DateFormat.getDateTimeInstance();
System.out.println("\n日期时间\n默认格式:" + dateFormat.format(date));//2018年5月26日 下午2:53:09
dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);
System.out.println("默认格式2:" + dateFormat.format(date));//2018年5月26日 CST 下午2:53:09
//日期格式化类 SimpleDateFormat extends dateFormat
SimpleDateFormat sdf = new SimpleDateFormat();
System.out.println("\n默认格式的当前时间:" + sdf.format(date));//2018/5/26 下午2:53
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
System.out.println("指定格式的当前时间:" + sdf2.format(date));//日期转换指定格式的字符串
// 2018年05月26日 14:53:09
//注意: 指定的字符串格式必须要与SimpleDateFormat的模式要一致。
String birthday = "2000年12月26日 11:29:08";
date = sdf2.parse(birthday);
System.out.println("字符转换成对应的日期:" + date);//字符转换成对应的日期
// Tue Dec 26 11:29:08 CST 2000
/**
* 输入其他字符,都会原样输出
*yyyy:年
* MM:月
* dd:日
* hh:1~12小时制(1-12)
* HH:24小时制(0-23)
* mm:分
* ss:秒
* S:毫秒
* E:星期几
* D:一年中的第几天
* F:一月中的第几个星期(会把这个月总共过的天数除以7)
* w:一年中的第几个星期
* W:一月中的第几星期(会根据实际情况来算)
* a:上下午标识
* k:和HH差不多,表示一天24小时制(1-24)。
* K:和hh差不多,表示一天12小时制(0-11)。
* z:表示时区
* */
}
//Calendar方法演示
private static void calendarDemo() {
Calendar cal = Calendar.getInstance();//当前时间实例
System.out.println("年" + cal.get(Calendar.YEAR));//return int
System.out.println("月" + (cal.get(Calendar.MONTH) + 1));//国外计算月份是从0开始,所以+1 等同DAY_OF_MONTH
System.out.println("日" + cal.get(Calendar.DATE));
System.out.println("周" + (cal.get(Calendar.DAY_OF_WEEK) - 1));//国外计算周是从日开始
System.out.println("时" + cal.get(Calendar.HOUR_OF_DAY));// HOUR 是12进制
System.out.println("分" + cal.get((Calendar.MINUTE)));
System.out.println("秒" + cal.get(Calendar.SECOND));
//计算指定天数后的时间
cal.set(2008, 7, 8);//设置时间 7其实是8月
System.out.println("工程开始时间:" + cal.getTime());//getTime()返回Date对象
cal.add(Calendar.DATE, 100);//工程实施100天(年,月,小时...)
System.out.println("工程结束时间:" + cal.getTime());
}
//日期练习:实现获得两个日期相减得到的天数
private static void datePractice() {
String str_data1 = "2012-3-17";
String str_data2 = "2012-4-6";
System.out.println(getDataSubtract(str_data1, str_data2));
}
//日期练习:获得两个日期相减的天数
private static int getDataSubtract(String str_data1, String str_data2) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date data1 = null;
Date data2 = null;
try {
data1 = sdf.parse(str_data1);
data2 = sdf.parse(str_data2);
} catch (ParseException e) {
e.printStackTrace();
}
Date date = new Date(Math.abs(data1.getTime() - data2.getTime()));
return (int) (date.getTime() / 1000 / 60 / 60 / 24);
}
}
/**
* toString
* public String toString()把此 Date 对象转换为以下形式的 String:
* dow mon dd hh:mm:ss zzz yyyy其中:
* <p>
* dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。
* mon 是月份 (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec)。
* dd 是一月中的某一天(01 至 31),显示为两位十进制数。
* hh 是一天中的小时(00 至 23),显示为两位十进制数。
* mm 是小时中的分钟(00 至 59),显示为两位十进制数。
* ss 是分钟中的秒数(00 至 61),显示为两位十进制数。
* zzz 是时区(并可以反映夏令时)。标准时区缩写包括方法 parse 识别的时区缩写。如果不提供时区信息,则 zzz 为空,即根本不包括任何字符。
* yyyy 是年份,显示为 4 位十进制数。
* <p>
* DAY_OF_WEEK
* get 和 set 的字段数字,指示一个星期中的某天。
* <p>
* DAY_OF_WEEK
* get 和 set 的字段数字,指示一个星期中的某天。
* <p>
* DAY_OF_WEEK
* get 和 set 的字段数字,指示一个星期中的某天。
*/
/**
* DAY_OF_WEEK
* get 和 set 的字段数字,指示一个星期中的某天。
*/
Date日期类常用方法
最新推荐文章于 2024-07-05 08:14:42 发布