您的位置:首页 > 编程语言 > Java开发

Java中的日期时间介绍

2016-07-17 17:03 453 查看
public class TestDate {
public static void main(String[] args){

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();

// 1.得到当前时间
System.out.println(sdf.format(calendar.getTime()));

// 2.得到上一个月的月初
calendar.add(Calendar.MONTH, -1);
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
Date strDateFromDefault = calendar.getTime();
String monthFirstDay = sdf.format(strDateFromDefault.getTime());
System.out.println(monthFirstDay);

// 3.得到上一个月的月末
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
Date strDateToDefault = calendar.getTime();
String monthLastDay = sdf.format(strDateToDefault.getTime());
System.out.println(sdf.format(strDateToDefault.getTime()));

// 4.ͨ通过某个月的第一天得到对应这个月的最后一天【日期的截取】
String monthBeginDay = "2015-11-01";
String month = monthBeginDay.substring(5, 7);
int lastDay = (month.indexOf(0) == 0) ? month.indexOf(1) : Integer.parseInt(month);
calendar.set(Integer.parseInt(monthBeginDay.substring(0, 4)), lastDay-1, 1);
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
Date strDate = calendar.getTime();
monthLastDay = sdf.format(strDate.getTime());

System.out.println(monthLastDay);

// 5.判断某一个日期是否符合当前格式,用正则表达式
String monthBeginDay = "2015-07";
if(!monthBeginDay.matches("^[0-9]{4,4}-[0-1][1-9]$")){
System.out.println("格式不正确ȷ ");
}else {
System.out.println("格式正确");
}

// 6.判断某一个日期是否符合当前格式,用正则表达式
String eL = "[0-9]{4}-[0-1][0-9]";
Pattern p = Pattern.compile(eL);
Matcher m = p.matcher("2015-03000");
boolean dateFlag = m.matches();
if (!dateFlag) {
System.out.println("格式错误");
}
else{
System.out.println("格式正确");
}

//7.得到某个月的月初和月末
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
String monthFirstDay = sdf.format(calendar.getTime());
System.out.println(monthFirstDay);

calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
String monthLastDay = sdf.format(calendar.getTime());
System.out.println(monthLastDay);

//8.增加月份或者天数后的日期
Calendar calendar = Calendar.getInstance();
calendar.setTime(calendar.getTime());//这里的时间必须是Date型
calendar.add(Calendar.MONTH, 1);
System.out.println("增加月份后的日期:"+calendar.getTime());

Calendar calendar = Calendar.getInstance();
calendar.setTime(calendar.getTime());
calendar.add(Calendar.DAY_OF_MONTH, 100);
System.out.println("增加天数后的日期:"+calendar.getTime());

// 9.获取当前时间对应的本周星期一和星期天的日期
Calendar cal =Calendar.getInstance();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
cal.setTime(cal.getTime());
cal.add(Calendar.DAY_OF_WEEK, 2);
System.out.println("增加月份后的日期:"+df.format(cal.getTime()));
//判断要计算的日期是否是周日,如果是则减一天计算周六的,否则会出问题,计算到下一周去了
int dayWeek = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天
if(1 == dayWeek) {
cal.add(Calendar.DAY_OF_MONTH, -1);
}
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); //获取本周一的日期
System.out.println("本周星期一的日期:"+df.format(cal.getTime()));
//这种输出的是上个星期周日的日期,因为老外那边把周日当成第一天
cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
//增加一个星期,才是我们中国人理解的本周日的日期
cal.add(Calendar.WEEK_OF_YEAR, 1);
System.out.println("本周星期天的日期:"+df.format(cal.getTime()));

//10.获取当前时间对应的下周星期一和星期天的日期
Calendar cal =Calendar.getInstance();
//SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
DateTool df = new DateTool();
cal.setTime(cal.getTime());
cal.add(Calendar.DAY_OF_WEEK, 5);
System.out.println("增加月份后的日期:"+df.format(cal.getTime()));
//判断要计算的日期是否是周日,如果是则减一天计算周六的,否则会出问题,计算到下一周去了
int dayWeek = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天
System.out.println(dayWeek);
if (dayWeek != 1) {
cal.add(Calendar.DAY_OF_MONTH, 9 - dayWeek);
}
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); //获取本周一的日期
System.out.println("下周星期一的日期:"+df.format(cal.getTime()));
//这种输出的是上个星期周日的日期,因为老外那边把周日当成第一天
cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
//增加一个星期,才是我们中国人理解的本周日的日期
cal.add(Calendar.WEEK_OF_YEAR, 1);
System.out.println("下周星期天的日期:"+df.format(cal.getTime()));

String releaseDate = df.format(cal.getTime());
String releaseDateNextSundaySql = "TO_DATE('"+releaseDate.substring(0, 12)+"', 'Month dd, YYYY')";
System.out.println("下周星期天的日期:"+releaseDateNextSundaySql);

//11.将date型时间的时分秒置为0
Calendar calendar =Calendar.getInstance();
calendar.setTime(calendar.getTime());
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
Date newShowDate = calendar.getTime();
System.out.println(newShowDate);

//12.获取特定格式的日期
Calendar calendar =Calendar.getInstance();
DateTool dt = new DateTool();
String showDate = dt.format("MMM d, yyyy", calendar.getTime());
System.out.println(showDate);

Date date = new Date();
DateFormat shortDateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT,DateFormat.SHORT);
DateFormat mediumDateFormat = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM);
DateFormat longDateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG);
DateFormat fullDateFormat = DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL);
//7/14/16 6:18 PM
System.out.println(shortDateFormat.format(date));
//Jue 14, 2016 6:18:20 PM
System.out.println(mediumDateFormat.format(date));
//Jue 14, 2016 6:18:20 PM CST
System.out.println(longDateFormat.format(date));
//Monday, Jue 14, 2016 6:18:20 PM CST
System.out.println(fullDateFormat.format(date));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java