1、计算2个时间想相差天数
public static long diffDays(String start,String end){
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d1 = null;
Date d2 = null;
long diffDays=0;
try {
d1 = format.parse(start);
d2 = format.parse(end);
//毫秒ms
long diff = d2.getTime() - d1.getTime();
long diffSeconds = diff / 1000 % 60;
long diffMinutes = diff / (60 * 1000) % 60;
long diffHours = diff / (60 * 60 * 1000) % 24;
diffDays = diff / (24 * 60 * 60 * 1000);
// System.out.print("两个时间相差:");
// System.out.print(diffDays + " 天, ");
// System.out.print(diffHours + " 小时, ");
// System.out.print(diffMinutes + " 分钟, ");
// System.out.print(diffSeconds + " 秒.");
} catch (Exception e) {
e.printStackTrace();
}
return diffDays;
}
2、秒数转化为日期
public static String getDateFromSeconds(String seconds){
if(seconds==null)
return " ";
else{
Date date=new Date();
try{
date.setTime(Long.parseLong(seconds));
}catch(NumberFormatException nfe){
nfe.printStackTrace();
}
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return format.format(date);
}
}
3、日期格式转换 区分 上午 下午
public static String transfer(String s) throws ParseException{
SimpleDateFormat sdformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sdformat.setTimeZone(TimeZone.getTimeZone("GMT+8"));
Date d = sdformat.parse(s);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss a");
String time = sdf.format(d);
if(time.contains("上午")){
time = time.replace("上午","AM");
}
if(time.contains("下午")){
time = time.replace("下午","PM");
}
return time;
}
4、获取当月第一天
public static String getFirstDayOfMonth() {
String str = "";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar lastDate = Calendar.getInstance();
lastDate.set(Calendar.DATE, 1);// 设为当前月的1 号
str = sdf.format(lastDate.getTime());
return str;
}
5、计算当月最后一天,返回字符串
public static String getDefaultDay() {
String str = "";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar lastDate = Calendar.getInstance();
lastDate.set(Calendar.DATE, 1);// 设为当前月的1 号
lastDate.add(Calendar.MONTH, 1);// 加一个月,变为下月的1 号
lastDate.add(Calendar.DATE, -1);// 减去一天,变为当月最后一天
str = sdf.format(lastDate.getTime());
return str;
}
6、日期时间转换成文字
public static String getDateTimeString(Date date){
if(date==null){
throw new NullPointerException();
}
Date currentDate = new Date();
long cha = Math.abs(date.getTime()-currentDate.getTime());
// System.out.println("cha="+cha);
long hours = cha/hour;
// System.out.println(hours);
if(hours<1){
if(cha/m<=0){
return "刚刚";
}
return cha/m+"分钟前";
}
if(hours<24){
return cha/hour+"小时前";
}
if(hours<=72){
int nn = Integer.valueOf(cha/day+"");
if(cha%day>0){
nn++;
}
return nn+"天前";
}
return sdf.format(date);
}
7、推算日期区间
private String dateformattersales(int dates, int type,String format) {
Date d2 = new Date();
SimpleDateFormat formatter = new SimpleDateFormat(format);
String dateString = formatter.format(d2);
Date dt = null;
try {
dt = formatter.parse(dateString);
} catch (ParseException e) {
e.printStackTrace();
}
Calendar rightNow = Calendar.getInstance();
rightNow.setTime(dt);
if (type == 1) {
rightNow.add(Calendar.DAY_OF_YEAR, -dates);
}
if (type == 2) {
rightNow.add(Calendar.MONTH, -dates);
}
Date dt1 = rightNow.getTime();
String reStr = formatter.format(dt1);
return reStr;
}
8、判断是否闰年
public static boolean isLeapYear(String ddate) {
/**
* 详细设计: 1.被400整除是闰年,否则: 2.不能被4整除则不是闰年 3.能被4整除同时不能被100整除则是闰年
* 3.能被4整除同时能被100整除则不是闰年
*/
Date d = strToDate(ddate);
GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
gc.setTime(d);
int year = gc.get(Calendar.YEAR);
if ((year % 400) == 0)
return true;
else if ((year % 4) == 0) {
if ((year % 100) == 0)
return false;
else
return true;
} else
return false;
}
9、判断2个时间是否在同一周
public static boolean isSameWeekDates(Date date1, Date date2) {
Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();
cal1.setTime(date1);
cal2.setTime(date2);
int subYear = cal1.get(Calendar.YEAR) - cal2.get(Calendar.YEAR);
if (0 == subYear) {
if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))
return true;
} else if (1 == subYear && 11 == cal2.get(Calendar.MONTH)) {
// 如果12月的最后一周横跨来年第一周的话则最后一周即算做来年的第一周
if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))
return true;
} else if (-1 == subYear && 11 == cal1.get(Calendar.MONTH)) {
if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))
return true;
}
return false;
}
10、 产生周序列,即得到当前时间所在的年度是第几周
public static String getSeqWeek() {
Calendar c = Calendar.getInstance(Locale.CHINA);
String week = Integer.toString(c.get(Calendar.WEEK_OF_YEAR));
if (week.length() == 1)
week = "0" + week;
String year = Integer.toString(c.get(Calendar.YEAR));
return year + week;
}
11、获得一个日期所在的周的星期几的日期,如要找出2002年2月3日所在周的星期一是几号
public static String getWeek(String sdate, String num) {
// 再转换为时间
Date dd = VeDate.strToDate(sdate);
Calendar c = Calendar.getInstance();
c.setTime(dd);
if (num.equals("1")) // 返回星期一所在的日期
c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
else if (num.equals("2")) // 返回星期二所在的日期
c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
else if (num.equals("3")) // 返回星期三所在的日期
c.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY);
else if (num.equals("4")) // 返回星期四所在的日期
c.set(Calendar.DAY_OF_WEEK, Calendar.THURSDAY);
else if (num.equals("5")) // 返回星期五所在的日期
c.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
else if (num.equals("6")) // 返回星期六所在的日期
c.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
else if (num.equals("0")) // 返回星期日所在的日期
c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
return new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
}
12、根据一个日期,返回是星期几的字符串
public static String getWeek(String sdate) {
// 再转换为时间
Date date = VeDate.strToDate(sdate);
Calendar c = Calendar.getInstance();
c.setTime(date);
// int hour=c.get(Calendar.DAY_OF_WEEK);
// hour中存的就是星期几了,其范围 1~7
// 1=星期日 7=星期六,其他类推
return new SimpleDateFormat("EEEE").format(c.getTime());
}
public static String getWeekStr(String sdate){
String str = "";
str = VeDate.getWeek(sdate);
if("1".equals(str)){
str = "星期日";
}else if("2".equals(str)){
str = "星期一";
}else if("3".equals(str)){
str = "星期二";
}else if("4".equals(str)){
str = "星期三";
}else if("5".equals(str)){
str = "星期四";
}else if("6".equals(str)){
str = "星期五";
}else if("7".equals(str)){
str = "星期六";
}
return str;
}
13、形成如下的日历 , 根据传入的一个时间返回一个结构 星期日 星期一 星期二 星期三 星期四 星期五 星期六 下面是当月的各个时间
public static String getNowMonth(String sdate) {
// 取该时间所在月的一号
sdate = sdate.substring(0, 8) + "01";
// 得到这个月的1号是星期几
Date date = VeDate.strToDate(sdate);
Calendar c = Calendar.getInstance();
c.setTime(date);
int u = c.get(Calendar.DAY_OF_WEEK);
String newday = VeDate.getNextDay(sdate, (1 - u) + "");
return newday;
}