JAVA时间相关操作
来源:互联网 发布:terrans force s4 知乎 编辑:程序博客网 时间:2024/05/22 11:55
package com.anbow.icreate.util;import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Calendar;import java.util.Date;import java.util.List;/** * 时间相关操作 * * @author Satan * */public class DateUtils { public static SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); /** * 得到一个日期的时间戳 */ public long getTimeStampByDate(String date) { Date cdate = null; try { cdate = simpleDateFormat.parse(date); } catch (ParseException e) { e.printStackTrace(); } //得date.getTime()所返回的是一个long型的毫秒数 return cdate.getTime(); } public static void main(String[] args) { String date = "2015-10-01"; System.out.println(getCurrentStamp()); } /** * 返回当前时间的时间戳 * @return */ public static String getCurrentStamp(){ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); Date date = new Date(); String datelong = simpleDateFormat.format(date); return datelong; } /** * 将日期转化为字符串 * */ public String getDateStringByDate(Date date) { String cdate = simpleDateFormat.format(date); return cdate; } /** * 返回该日期的后n天 YYYY-MM-DD * @param s YYYY-MM-DD * @param n int * @return YYYY-MM-DD */ public String addDay(String s, int n) { try { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Calendar cd = Calendar.getInstance(); cd.setTime(sdf.parse(s)); cd.add(Calendar.DATE, n);// 增加一天 return sdf.format(cd.getTime()); } catch (Exception e) { return null; } } /** * 根据日期转为时间戳进行比较,并返回差值 * */ public long getTimeDifference(String date, String preDate) { long datestamp = getTimeStampByDate(date); long predatestamp = getTimeStampByDate(preDate); return datestamp - predatestamp; } /** * 计算两个日期之间相差的天数 * * @param smdate * 较小的时间 * @param bdate * 较大的时间 * @return 相差天数 * @throws ParseException */ public int daysBetween(String smdate, String bdate) { Date smalldate=new Date(); try { smalldate = simpleDateFormat.parse(smdate); } catch (ParseException e) { } Date bigdate=new Date(); try { bigdate = simpleDateFormat.parse(bdate); } catch (ParseException e) { } Calendar cal = Calendar.getInstance(); cal.setTime(smalldate); long time1 = cal.getTimeInMillis(); cal.setTime(bigdate); long time2 = cal.getTimeInMillis(); long between_days = (time2 - time1) / (1000 * 3600 * 24); int i=Integer.parseInt(String.valueOf(between_days)); return i; } /** * * 判断日期是否为周六日 * 如果为周六日,则返回1,否则返回0 * @param date * @return */ public int isWeekend(String date) { int is_weekend = 0; Date bdate = null; try { bdate = simpleDateFormat.parse(date); } catch (ParseException e) { e.printStackTrace(); } Calendar cal = Calendar.getInstance(); cal.setTime(bdate); // 如果为周六日,则返回1,否则返回0 if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY || cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) { is_weekend = 1; } return is_weekend; } /** * 获取当前日期 * @return */ public String getNowDate(){ Date date=new Date(); return getDateStringByDate(date); } public String dateForString(String time){ if(time!=null&&!time.equals("")){ Date cdate = null; try { cdate = simpleDateFormat.parse(time); } catch (ParseException e) { e.printStackTrace(); } time=getDateStringByDate(cdate); } return time; } public String getNowYear(){ return getNowDate().substring(0,4); } /** * 获取当前周开始日期(周一) * @param date YYYY-MM-DD * @return YYYY-MM-DD * @throws ParseException */ public String getWeekStart(String date) throws ParseException{ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Calendar cd = Calendar.getInstance(); cd.setTime(sdf.parse(date)); int day = cd.get(Calendar.DAY_OF_WEEK)-1; if(day == 1){ } else if(day == 2){ cd.add(Calendar.DATE, -1); } else if(day == 3){ cd.add(Calendar.DATE, -2); } else if(day == 4){ cd.add(Calendar.DATE, -3); } else if(day == 5){ cd.add(Calendar.DATE, -4); } else if(day == 6){ cd.add(Calendar.DATE, -5); } else if(day == 0){ cd.add(Calendar.DATE, -6); } return sdf.format(cd.getTime()); } /** * 获取当前周结束日期(周日) * @param date YYYY-MM-DD * @return YYYY-MM-DD * @throws ParseException */ public String getWeekEnd(String date) throws ParseException{ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Calendar cd = Calendar.getInstance(); cd.setTime(sdf.parse(date)); int day = cd.get(Calendar.DAY_OF_WEEK)-1; if(day == 1){ cd.add(Calendar.DATE, 6); } else if(day == 2){ cd.add(Calendar.DATE, 5); } else if(day == 3){ cd.add(Calendar.DATE, 4); } else if(day == 4){ cd.add(Calendar.DATE, 3); } else if(day == 5){ cd.add(Calendar.DATE, 2); } else if(day == 6){ cd.add(Calendar.DATE, 1); } else if(day == 0){ } return sdf.format(cd.getTime()); } /* * 判断年份是否是闰年 */ public boolean isRunYear(String year){ if(Integer.valueOf(year) % 4 == 0 && Integer.valueOf(year) % 100 != 0 || Integer.valueOf(year) % 400 == 0){ return true; }else{ return false; } } /* * 根据年份和月份计算天数 */ public int getDaysByYearAndMonth(int year,int month){ if(month==2){ if (((year % 100 == 0) && (year % 400 == 0)) || ((year % 100 != 0) && (year % 4 == 0))) { return 29; }else { return 28; } }else if(month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12 ) { return 31; }else if(month==4 || month==6 || month==9 || month==11) { return 30; } return 0; } /** * 获取三周前开始日期(周一) * @param date YYYY-MM-DD * @return YYYY-MM-DD * @throws ParseException */ public String getBeforeWeekStart(String date) throws ParseException{ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Calendar cd = Calendar.getInstance(); cd.setTime(sdf.parse(date)); int day = cd.get(Calendar.DAY_OF_WEEK)-1; if(day == 1){ cd.add(Calendar.DATE, -21); } else if(day == 2){ cd.add(Calendar.DATE, -22); } else if(day == 3){ cd.add(Calendar.DATE, -23); } else if(day == 4){ cd.add(Calendar.DATE, -24); } else if(day == 5){ cd.add(Calendar.DATE, -25); } else if(day == 6){ cd.add(Calendar.DATE, -26); } else if(day == 0){ cd.add(Calendar.DATE, -27); } return sdf.format(cd.getTime()); } /** * 获取上上周开始日期(周一) * @param date YYYY-MM-DD * @return YYYY-MM-DD * @throws ParseException */ public String getBeforePWeekStart(String date) throws ParseException{ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Calendar cd = Calendar.getInstance(); cd.setTime(sdf.parse(date)); int day = cd.get(Calendar.DAY_OF_WEEK)-1; if(day == 1){ cd.add(Calendar.DATE, -14); } else if(day == 2){ cd.add(Calendar.DATE, -15); } else if(day == 3){ cd.add(Calendar.DATE, -16); } else if(day == 4){ cd.add(Calendar.DATE, -17); } else if(day == 5){ cd.add(Calendar.DATE, -18); } else if(day == 6){ cd.add(Calendar.DATE, -19); } else if(day == 0){ cd.add(Calendar.DATE, -20); } return sdf.format(cd.getTime()); } /** * 获取上周开始日期(周一) * @param date YYYY-MM-DD * @return YYYY-MM-DD * @throws ParseException */ public String getBeforeLastWeekStart(String date) throws ParseException{ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Calendar cd = Calendar.getInstance(); cd.setTime(sdf.parse(date)); int day = cd.get(Calendar.DAY_OF_WEEK)-1; if(day == 1){ cd.add(Calendar.DATE, -7); } else if(day == 2){ cd.add(Calendar.DATE, -8); } else if(day == 3){ cd.add(Calendar.DATE, -9); } else if(day == 4){ cd.add(Calendar.DATE, -10); } else if(day == 5){ cd.add(Calendar.DATE, -11); } else if(day == 6){ cd.add(Calendar.DATE, -12); } else if(day == 0){ cd.add(Calendar.DATE, -13); } return sdf.format(cd.getTime()); } /** * 判断是否为周一 * @param date * @return * @throws ParseException */ public Boolean isMonday(String date) throws ParseException{ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Calendar cd = Calendar.getInstance(); cd.setTime(sdf.parse(date)); int day = cd.get(Calendar.DAY_OF_WEEK)-1; if(day == 1){ return true; } else return false; } /** * 设置默认时间(三周前的星期一开始到三周前的星期日 * @return */ public List<String> setDefaultTime(){ DateUtils du = new DateUtils(); String nowTime = du.getNowDate(); String defaultTimeStart = null; String defaultTimeEnd = null; String lastTimeStart = null; String lastTimeEnd = null; String pTimeStart = null; String pTimeEnd = null; List<String> timeList = new ArrayList<String>(); try { //上周一 lastTimeStart = du.getBeforeLastWeekStart(nowTime); timeList.add(lastTimeStart); //上周日 lastTimeEnd = du.getWeekEnd(lastTimeStart); timeList.add(lastTimeEnd); //上上周一 pTimeStart = du.getBeforePWeekStart(nowTime); timeList.add(pTimeStart); //上上周日 pTimeEnd = du.getWeekEnd(pTimeStart); timeList.add(pTimeEnd); //前三周一 defaultTimeStart = du.getBeforeWeekStart(nowTime); timeList.add(defaultTimeStart); //前三周日 defaultTimeEnd = du.getWeekEnd(defaultTimeStart); timeList.add(defaultTimeEnd); } catch (ParseException e) { e.printStackTrace(); } return timeList; } /** * 判断当前时间是否小于传入时间 * @param date1 * @return boolean */ public static boolean compare_date(String date1) { DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); try { Date dt1 = df.parse(date1); Date dt2 = new Date(); if (dt2.getTime() > dt1.getTime()) { return true; } } catch (Exception exception) { exception.printStackTrace(); } return false; } /** * 判断日期为该年的第几周 * @return */ public static int isWeek(String today) throws ParseException{ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); Date date = format.parse(today); Calendar calendar = Calendar.getInstance(); calendar.setFirstDayOfWeek(Calendar.MONDAY); calendar.setTime(date); int num=(calendar.get(Calendar.WEEK_OF_YEAR)); return num; }}
阅读全文
0 0
- JAVA时间相关操作
- java中时间相关的操作
- Java中关于时间的相关操作
- Java中时间格式化及相关操作
- java对时间的相关操作
- 日期时间相关操作
- 一些时间相关操作
- Android时间相关操作
- js时间相关操作
- 日期时间相关操作
- MySQL时间相关操作
- JAVA 时间相关
- java 时间相关类
- java API 时间相关
- Java 时间相关备忘
- date java 时间相关
- java时间相关
- Javascript 日期时间相关操作
- 计算节点宕机后,vm的迁移方法
- 苹果超省电技巧分享,教你如何玩转你的iPhone 手机
- CCF 历年真题之中间数(_1612_1_MiddleNum.java)参考答案
- 7.10 写一函数,输入一行字符,将此字符串中最长的单词输出。
- Maven pom
- JAVA时间相关操作
- Android 框架学习2:使用编译时注解简单实现类似 ButterKnife 的效果
- 函数重载:仅根据函数返回值类型不能实现重载
- javaweb学习总结(四)spring配置Transaction的五种方式
- 大龄程序员肉翻记录【一】
- GitHub控件之BadgeView(数字提醒)
- 微信开发:js sdk 分享(java)
- md5加密,第二次加密,解密
- 一分钟教会你如何做自媒体淘客