自己用到过的时间方法
package com.util; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.Locale; /** * 操作时间、日期的工具类 */ public class DateUtil { public static SimpleDateFormat daydf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); public static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); public static SimpleDateFormat ym = new SimpleDateFormat("yyyy-MM"); private DateUtil(){} /** * 格式化字符串为日期 * @param day 字符串格式为yyyy-MM-dd * @return 日期 Date对象 */ public static java.util.Date formatDayTime(String day){ try { return sdf.parse(day); } catch (ParseException ex) { ex.printStackTrace(); return new java.util.Date(); } } public static Date formatToDate(String day){ try { return daydf.parse(day); } catch (ParseException ex) { ex.printStackTrace(); return new java.util.Date(); } } /** * 格式字符串为某年某月的第一天。 * @param yearmonth 格式为2008-10 * @return 某年某月的第一天 */ public static java.util.Date formatMonthTime(String yearmonth){ try { return sdf.parse(yearmonth + "-01"); } catch (ParseException ex) { ex.printStackTrace(); return new java.util.Date(); } } /** * * @return * @throws ParseException */ public static String lastDayOfMonth(String yearMonth) throws ParseException{ Calendar calendar=Calendar.getInstance(); Calendar cpcalendar=(Calendar)calendar.clone(); cpcalendar.setTime(ym.parse(yearMonth)); cpcalendar.add(Calendar.MONTH, 1); cpcalendar.add(Calendar.DATE, -1); String date = sdf.format(cpcalendar.getTime()); return date; } /** * 获取当前月有多少天 * @return */ public static int getDayOfMonth(){ Calendar c = Calendar.getInstance(Locale.CHINA); int countDay = c.getActualMaximum(Calendar.DATE); return countDay; } /** *返回自1970年1月1日00:00:00GMT以来此日期对象表示的毫秒数 *@param str 格式为yyyy-MM-dd */ public static long parseDayByYYYYMMDD(String str){ try { return sdf.parse(str).getTime(); } catch (Exception ex) { return 0L; } } /** *返回自1970年1月1日00:00:00GMT以来此时间对象表示的秒数 *@param str 格式为yyyy-MM-dd HH:mm:ss */ public static int parseTimeByYYYYMMDDHHMMSS(String str){ if(str == null || str.length() != 19) return 0; try { return (int)(daydf.parse(str).getTime()/1000L); } catch (Exception ex) { return 0; } } /** * 得到 yyyy-MM-dd 格式的指定日期的前一天 */ public static String foreDay(String day){ Calendar cal = Calendar.getInstance(); cal.setTimeInMillis(parseDayByYYYYMMDD(day)); cal.add(Calendar.DAY_OF_MONTH, -1); return sdf.format(cal.getTime()); } /** * 根据时间值构造日期 */ public static String parseDay(int time){ return sdf.format(new java.util.Date(time*1000L)); } /** * 显示时间 * @param millseconds 毫秒数 * @return 时间显示 */ public static String displayTime(long millseconds) { if(millseconds < 1000) return millseconds+" ms"; int seconds = (int)(millseconds/1000); if(seconds < 60) return seconds+" s"; if(seconds < 60*60) return seconds/60+"m"+seconds%60+"s"; int m = seconds -(seconds/3600)*3600; if(seconds < 24*60*60) return seconds/3600+"h"+m/60+"m"+m%60+"s"; return millseconds+" ms"; } /** * 转换成yyyy-MM-dd格式的日期字符串 * @param d Date对象 */ public static String formatDay(java.util.Date d){ return sdf.format(d); } /** * 转换成yyyy-MM-dd格式的日期字符串 * @param d Calendar对象 */ public static String formatDay(java.util.Calendar d){ return sdf.format(d.getTime()); } /** * 转换成yyyy-MM-dd HH:mm:ss格式的时间 * @param time 毫秒数 */ public static String formatyyyyMMddHHmmss(long time){ return daydf.format(new java.util.Date(time)); } /** * 转换成yyyy-MM-dd HH:mm:ss格式的时间 * @param time 毫秒数 */ public static String formatyyyyMMdd(long time){ return sdf.format(new java.util.Date(time)); } /** * 将时间转换成yyyy-MM-dd HH:mm:ss的格式字符串。 * @param time 时间对象 * @return 格式化后的字符串,当输入为null时输出为"" */ public static String formatyyyyMMddHHmmss(Date time){ if(time==null){ return ""; } try{ return daydf.format(time); } catch(Exception ex){ return ""; } } /** * 当前日期 * @return yyyy-MM-dd格式的当前日期 */ public static String today() { return sdf.format(new java.util.Date()); } /** * 当前日期的前一天 * @return 当前日期的前一天 */ public static String yesterday(){ java.util.Calendar cal =java.util.Calendar.getInstance(); cal.add(java.util.Calendar.DAY_OF_MONTH, -1); return sdf.format(cal.getTime()); } /** * 当前日期的下一天 * @return 当前日期的下一天 */ public static String tomorrow(){ java.util.Calendar cal =java.util.Calendar.getInstance(); cal.add(java.util.Calendar.DAY_OF_MONTH, 1); return sdf.format(cal.getTime()); } /** * 返回本月1号 * @return 返回本月1号 */ public static String currmonth1day(){ java.util.Calendar cal =java.util.Calendar.getInstance(); cal.set(java.util.Calendar.DAY_OF_MONTH, 1); return sdf.format(cal.getTime()); } /** * 返回本月最后一天 */ public static String lastDayOfMonth(){ Calendar calendar=Calendar.getInstance(); Calendar cpcalendar=(Calendar)calendar.clone(); cpcalendar.set(Calendar.DAY_OF_MONTH,1); cpcalendar.add(Calendar.MONTH, 1); cpcalendar.add(Calendar.DATE, -1); String date = sdf.format( new Date(cpcalendar.getTimeInMillis())); return date; } /** * 给指定时间加上一个数值 * @param time1 要加上一数值的时间,为null即为当前时间,格式为yyyy-MM-dd HH:mm:ss * @param addpart 要加的部分:年月日时分秒分别为:YMDHFS * @param num 要加的数值 * @return 新时间,格式为yyyy-MM-dd HH:mm:ss */ public static String addTime(String time1,String addpart,int num){ try{ String now = daydf.format(new Date()); time1 = (time1 == null) ? now : time1; if (time1.length() < 19){ time1 += " 00:00:00"; } GregorianCalendar cal = new GregorianCalendar(); cal.setTime(daydf.parse(time1)); if (addpart.equalsIgnoreCase("Y")){ cal.add(Calendar.YEAR,num); }else if (addpart.equalsIgnoreCase("M")){ cal.add(Calendar.MONTH,num); }else if (addpart.equalsIgnoreCase("D")){ cal.add(Calendar.DATE,num); }else if (addpart.equalsIgnoreCase("H")){ cal.add(Calendar.HOUR,num); }else if (addpart.equalsIgnoreCase("F")){ cal.add(Calendar.MINUTE,num); }else if (addpart.equalsIgnoreCase("S")){ cal.add(Calendar.SECOND,num); } return daydf.format(cal.getTime()); } catch(Exception e){ throw new RuntimeException(e); } } /** * 给指定日期加上一个数值 * @param date1 要加上一数值的日期,为null即为当前日期,格式为yyyy-MM-dd * @param addpart 要加的部分:年月日分别为:YMD * @param num 要加的数值 * @return 新日期,格式为yyyy-MM-dd */ public static String addDate(String date1,String addpart,int num){ return addTime(date1,addpart,num).substring(0,10); } /** * 当前日期 * @return yyyy-MM-dd HH:mm:ss格式的当前日期 */ public static String now() { return daydf.format(new java.util.Date()); } /** * 返回当前时间 */ public static String timeofnow(){ Calendar curcal = Calendar.getInstance(); return daydf.format(curcal.getTime()); } /** * 得到距离当前天几天的日期表达,格式为1985-12-20。 * @param step 天数。例如-10表示十天前 * @return */ public static String dateofSepcial(int step) { java.util.Calendar cal = java.util.Calendar.getInstance(); cal.add(java.util.Calendar.DAY_OF_MONTH, step); return sdf.format(cal.getTime()); } /** * UNIX时间x * @return */ public static String getCurrUnixtimestamp(){ String ret = ""; try { Date date = daydf.parse("1970-01-01 00:00:00"); long l = (new Date().getTime() - date.getTime())/1000; ret = String.valueOf(l); } catch (Exception e) { e.printStackTrace(); } return ret; } /** * 比较时间大小,精确到时分秒 */ public static boolean compareDateYYYYMMDDHHmmss(String date1, String date2) { try { Date dt1 = daydf.parse(date1); Date dt2 = daydf.parse(date2); if (dt1.getTime() >= dt2.getTime()) { return true; } else if (dt1.getTime() < dt2.getTime()) { return false; } } catch (Exception e) { e.printStackTrace(); } return false; } /** * 比较时间大小,精确到天 */ public static boolean compareDateYYYYMMDD(String date1, String date2) { try { Date dt1 = sdf.parse(date1); Date dt2 = sdf.parse(date2); if (dt1.getTime() >= dt2.getTime()) { return true; } else if (dt1.getTime() < dt2.getTime()) { return false; } } catch (Exception e) { e.printStackTrace(); } return false; } /** * 计算两日期的差的天数 * @param smdate 开始日期 * @param bdate 结束日期 */ public static int daysBetween(String smdate,String bdate) { int num = 0; try { SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); Calendar cal = Calendar.getInstance(); cal.setTime(sdf.parse(smdate)); long time1 = cal.getTimeInMillis(); cal.setTime(sdf.parse(bdate)); long time2 = cal.getTimeInMillis(); long between_days=(time2-time1)/(1000*3600*24); num = Integer.parseInt(String.valueOf(between_days)); } catch (Exception e) { e.printStackTrace(); } return num; } /** * 获取传入时间,所在年的周数 * @param date * @return */ public static int getWeekOfYear(String dateStr) { //简单时间格式话类 SimpleDateFormat simpleDateFormat =new SimpleDateFormat("yyyy-MM-dd"); try { Date date = simpleDateFormat.parse(dateStr); Calendar c = new GregorianCalendar(); c.setFirstDayOfWeek(Calendar.MONDAY); c.setMinimalDaysInFirstWeek(7); c.setTime(date); return c.get(Calendar.WEEK_OF_YEAR); } catch (ParseException e) { e.printStackTrace(); } return 1; } /** * 获取当前年的最大周数 * @param year * @return */ public static int getMaxWeekNumOfYear(int year) { //简单时间格式话类 SimpleDateFormat simpleDateFormat =new SimpleDateFormat("yyyy-MM-dd"); Calendar c = new GregorianCalendar(); c.set(year, Calendar.DECEMBER, 31, 23, 59, 59); return getWeekOfYear(simpleDateFormat.format(c.getTime())); } /** * 获取某年的第几周的开始日期 * @param year * @param week * @return */ public static String getFirstDayOfYearOrWeek(int year, int week) { //简单时间格式话类 SimpleDateFormat simpleDateFormat =new SimpleDateFormat("yyyy-MM-dd"); Calendar c = new GregorianCalendar(); c.set(Calendar.YEAR, year); c.set(Calendar.MONTH, Calendar.JANUARY); c.set(Calendar.DATE, 1); Calendar cal = (GregorianCalendar) c.clone(); cal.add(Calendar.DATE, week * 7); return getFirstDayOfWeek(simpleDateFormat.format(cal.getTime())); } /** * 获取当前时间所在周的开始日期 * @param dateStr * @return */ public static String getFirstDayOfWeek(String dateStr) { //简单时间格式话类 SimpleDateFormat simpleDateFormat =new SimpleDateFormat("yyyy-MM-dd"); try { //将字符串格式话为时间 Date date = simpleDateFormat.parse(dateStr); Calendar c = new GregorianCalendar(); c.setFirstDayOfWeek(Calendar.MONDAY); c.setTime(date); c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek()); //Monday return simpleDateFormat.format(c.getTime()); } catch (ParseException e) { e.printStackTrace(); } return null; } /** * 获取输入时间,相同周数、相同星期几、去年的日期 * @param thisDate * @return */ public static String getPastWeekEqualDate(String thisDate){ //简单时间格式话类 SimpleDateFormat simpleDateFormat =new SimpleDateFormat("yyyy-MM-dd"); Date date = new Date(); try { date = simpleDateFormat.parse(thisDate); } catch (ParseException e) { e.printStackTrace(); } Calendar cal = Calendar.getInstance(); //设置时间 cal.setTimeInMillis(date.getTime()); //获取当前年份 int year = cal.get(Calendar.YEAR); //获取当前在今年的周数 int startTimeWeek = DateUtil.getWeekOfYear(thisDate); //获取当前日期所在周的开始日期 String thisWeekDate = DateUtil.getFirstDayOfYearOrWeek(year,startTimeWeek); //计算输入日期与所在周第一天的差值 int insertDiffer =DateUtil.daysBetween(thisWeekDate,thisDate); //获取去年的最大周树 int pastYearMaxWeek = DateUtil.getMaxWeekNumOfYear(year-1); //如果去年没有当前周,则周数减1 if(startTimeWeek > pastYearMaxWeek){ startTimeWeek = startTimeWeek -1; } //获取去年的同周数的,第一天 String paseYearWeekOneDdy = DateUtil.getFirstDayOfYearOrWeek(year-1,startTimeWeek); //得到去年相同周数的相同的日期 String pastWeekStartDate = DateUtil.addDate(paseYearWeekOneDdy, "D", insertDiffer); return pastWeekStartDate; } /** * 测试 */ public static void main(String[] args) throws ParseException { String thisDate = "2015-07-29"; //简单时间格式话类 SimpleDateFormat simpleDateFormat =new SimpleDateFormat("yyyy-MM-dd"); Date date = simpleDateFormat.parse(thisDate); Calendar cal = Calendar.getInstance(); //设置时间 cal.setTimeInMillis(date.getTime()); //获取当前年份 int year = cal.get(Calendar.YEAR); //获取当前在今年的周数 int startTimeWeek = DateUtil.getWeekOfYear(thisDate); System.out.println("当前周数:" + startTimeWeek); //获取去年的最大周树 int pastYearMaxWeek = DateUtil.getMaxWeekNumOfYear(year-1); System.out.println("去年最大周数:" + pastYearMaxWeek); //如果去年没有当前周,则周数减1 if(startTimeWeek > pastYearMaxWeek){ startTimeWeek = startTimeWeek -1; } //获取当前日期所在周的开始日期 String thisWeekDate = DateUtil.getFirstDayOfYearOrWeek(year,startTimeWeek); System.out.println("当前日期所在周的第一天日期:" + thisWeekDate); //获取去年的同周数的,第一天 String paseYearWeekOneDdy = DateUtil.getFirstDayOfYearOrWeek(year-1,startTimeWeek); System.out.println("去年相同周岁的第一天日期:" + paseYearWeekOneDdy); //计算输入时间所在的周,与当前周的第一天的天数差 int insertDiffer =DateUtil.daysBetween(thisWeekDate,thisDate); System.out.println("输入日期和输入日期所在周的第一天相差天数:" + insertDiffer); //得到去年相同周数的相同的日期 String pastWeekDate = DateUtil.addDate(paseYearWeekOneDdy, "D", insertDiffer); System.out.println("去年相同周岁相同日期:" + pastWeekDate); } }
相关推荐
很多长用的公共类,在开发中可以节省很多时间
适用于RF项目的公共类dll,免去重复开发的时间成本
包含几乎全部可以用到的时间计算方法 时间差 每月星期 每月第几个星期几等等
,加密解密,压缩解压缩,各种验证帮助类,图片,图片操作类,图片验证码,处理多媒体的公共类,处理枚举类,字符串,对象转换处理,帮助文档,序列化,异步线程,弹出消息类 ,数据展示控件绑定数据类,文件操作类,日历,日志,时间戳...
该类包含日期之间的天数、日期之间的月数、星期数以及月底日期、以及日期与月底日期的转换
枚举操作公共类(EnumHelper.cs) 身份证操作辅助类(IDCardHelper.cs) 检测字符编码的类(IdentifyEncoding.cs) RGB颜色操作辅助类(MyColors.cs) 日期操作类(MyDateTime.cs) 转换人民币大小金额辅助类(RMBUtil.cs...
Jquery相关、jQuery.cookie帮助类、访问系统相关、C#基础类库(Chart图形、CSV文件转换、FTP操作类、加密/解密帮助类、FTP操作类、JS操作...时间操作类、视频转换类、条形码、文件操作类、验证码)等等还有好多就没写了
转成base64字符串 从base64字符串转成可识别字符串 将 Stream 转成 byte[] 将 byte[] 转成 Stream ...根据时间范围,数据文件类型过滤数据文件 两数相除,结果有余数则自动加1 四则运算公式校验 ...........
公共函数,基本函数。 搜索文字的高亮,存取数据的去重封装,时间处理相关,拖动悬浮的封装,查询某个日期的未来或者曾经几天是多久,深拷贝,复制剪切板,金额上下取整,浮点数求和,当天时间转换为距离当天00:00...
针对时间日期各种格式之间转换等操作的公用类。
此为根据时间轮定时器的算法实现的 java时间轮的定时器,多轮和单轮实现
工具类包含String,Long,Date三种日志类型的获取和转换,不同时间单位(年/月/日/时/分/秒/毫秒)的时间差计算,给定时间获取附近整周的日期等~
此类库由Fly经一年多在一些实际开发项目中运用到的公共方法,特于今日整合在一起已备使用,也希望给朋友们提供一个参考(也有待优化)。 具体类库说明如下: 1.DateDeal.cs 专门用于对日期时间的处理,如时间差、...
处理多媒体的公共类;弹出消息类;二维码操作类;汉字转拼音;加密解密;科学计数,数学;类型转换;配置文件操作类;上传下载;时间操作类;视频帮助类;数据展示控件绑定数据类;条形码帮助类;图片操作类;文件操作类;序列化;...
在订购类业务中,频繁涉及时间计算问题。 两个构造函数 public Kdate(int days) public Kdate(int year, int month, int day) 三个公共接口: public Kdate delay(int length, char amount) amount为量词,用于...
网上有各式各样的帮助类,公共类,但是比较零碎,经常有人再群里或者各种社交账号上问有没有这个helper,那个helper,于是萌生了收集全部helper的念头,以便日后使用。各式各样的几乎都能找到,所有功能性代码都是独立...
#自己写的一些公共代码 ##时间公共类 一些常用的时间处理
主要介绍了C#实现日期格式转换的公共方法类,结合完整实例形式分析了C#针对各种常见日期格式的转换方法,涉及C#字符串、日期、时间相关操作技巧,需要的朋友可以参考下
本文实例讲述了JS实现处理时间,年月日,星期的公共方法。分享给大家供大家参考,具体如下: 在项目中用到的,用js 来得到年月日,星期,当前多少个周的函数,备忘在这里,以后参考。 Date.prototype.getWeek = ...