java:calendar类及一些比较实用的utils(二)
在这里将我在项目中用到的一些关于使用Calendar的utils分享出来,只是一部分,后期遇到好的通用方法会继续添加,以和大家交流学习,如果你还不熟悉这个类的使用,但是急需某个util,可以加群:413066190 (Java&xiaowei,Let's go! )互相帮助!
1.
/**
* 查询一段时间内的所有的日期
* @param dBegin
* @param dEnd
* @return
*/
public static List<Date> findDates(Date dBegin, Date dEnd) {
List dateList = new ArrayList();
dateList.add(dBegin);
Calendar calBegin = Calendar.getInstance();
// 使用给定的 Date 设置此 Calendar 的时间
calBegin.setTime(dBegin);
Calendar calEnd = Calendar.getInstance();
// 使用给定的 Date 设置此 Calendar 的时间
calEnd.setTime(dEnd);
// 测试此日期是否在指定日期之后
while (dEnd.after(calBegin.getTime())) {
// 根据日历的规则,为给定的日历字段添加或减去指定的时间量
calBegin.add(Calendar.DAY_OF_MONTH, 1);
dateList.add(calBegin.getTime());
}
return dateList;
}
2.
/**
* 获得最近的12个月的月份(包含当前月份)
* @return
*/
public static String[] getLast12Months(){
String[] last12Months = new String[12];
Calendar cal = Calendar.getInstance();
cal.set(Calendar.MONTH, cal.get(Calendar.MONTH)+1); //要先+1,才能把本月的算进去
for(int i=0; i<12; i++){
cal.set(Calendar.MONTH, cal.get(Calendar.MONTH)-1); //逐次往前推1个月
last12Months[11-i] = cal.get(Calendar.YEAR)+ "-" + (cal.get(Calendar.MONTH)+1);
} return last12Months; //返回数组形式的
}
3.
/**
* 获取指定月份的第一天和最后一天
* @param str
* @return
*/
public static Map<String, String> getFirstday_Lastday_Month(String st) throws Exception {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM");
Calendar calendar = Calendar.getInstance();
Date d = df1.parse(st);
calendar.setTime(d);
Date theDate = calendar.getTime(); //月第一天
GregorianCalendar gcLast = (GregorianCalendar) Calendar.getInstance();
gcLast.setTime(theDate);
gcLast.set(Calendar.DAY_OF_MONTH, 1);
String day_first = df.format(gcLast.getTime());
StringBuffer str = new StringBuffer().append(day_first);
day_first = str.toString(); //月最后一天
calendar.add(Calendar.MONTH, 1); //加一个月
calendar.set(Calendar.DATE, 1);
calendar.add(Calendar.DATE, -1);
String day_last = df.format(calendar.getTime());
StringBuffer endStr = new StringBuffer().append(day_last);
day_last = endStr.toString(); Map<String, String> map = new HashMap<String, String>();
map.put("first", day_first);
map.put("last", day_last);
return map;
/*
* 此处返回map形式,使用方式,如下:
* Map<String, String> map = getFirstday_Lastday_Month(str);
* map.get("first") //第一天
* map.get("last") //最后一天
*/
}
4.
/**
* 根据指定日期获取前一天的日期
*
* @param today
* @return
*/
public static String getYesterdayByToday(String day) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {
if (day != null && !"".equals(day)) {
date = sdf.parse(day);
} else {
date = sdf.parse(sdf.format(new Date()));
}
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DATE, -1);
String yesterday = sdf.format(cal.getTime());
return yesterday;
} catch (ParseException e) {
e.printStackTrace();
return "";
}
}
5.
/**
* 获取当前时间最近24小时的时间
*
* @return
*/
public static String[] getDateHour(String dateStr) {
String[] strs = new String[24];
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH"); Date date = null;
if (dateStr != null && !"".equals(dateStr)) {
date = sdf.parse(dateStr);
} else {
date = sdf.parse(sdf.format(new Date()));
} Calendar cd = Calendar.getInstance();
cd.setTime(date); //当前日期
// cd.add(Calendar.HOUR_OF_DAY, 1);
for (int i = 0; i < 24; i++) {
cd.add(Calendar.HOUR_OF_DAY, -1);
strs[i] = sdf.format(cd.getTime());
}
} catch (ParseException e) {
e.printStackTrace();
} return strs;
}
6.
/**
* 获取传入时间的前一天时间
*
* @param day
* @return
*/
public static String getYesterdayHour(String day) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
Date date = null;
try {
if (day != null && !"".equals(day)) {
date = sdf.parse(day);
} else {
date = sdf.parse(sdf.format(new Date()));
}
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DATE, -1);
String yesterday = sdf.format(cal.getTime());
return yesterday;
} catch (ParseException e) {
e.printStackTrace();
return "";
} }
7.
/**
* 将(1/26/15 11:59 PM)型时间格式转换
*
* @param dateStr
* @return
*/
public static String parseDateFromCsv(String dateStr) {
String dateString = null;
try {
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
SimpleDateFormat sdf2 = new SimpleDateFormat("M/dd/yy hh:mm a", Locale.US); Date date = sdf2.parse(dateStr);
dateString = sdf1.format(date); } catch (Exception e) {
e.printStackTrace();
}
return dateString;
}
8.
/**
* 获取当前时间,测试发现jdk直接获取时间可能会存在时差,需要通过代码来设置时区
*
* @return
*/
public static String getCurrTime() {
TimeZone tz = TimeZone.getTimeZone("Asia/Shanghai");
TimeZone.setDefault(tz);
return new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date());
}
9.其他待补充,
java:calendar类及一些比较实用的utils(二)的更多相关文章
- java:calendar类及一些比较实用的utils(一)
在java编程中经常会用到时间日期的计算.比较.格式化等等操作,刚开始接触Calendar类时,还是在初学习期间,小小白一枚,看着这个好复杂,懒惰心理作祟也就没有怎么去学习,后来在项目中经常用到,索性 ...
- Java Calendar 类的时间操作
Java Calendar 类的时间操作 标签: javaCalendar时间Date 2013-07-30 17:53 140401人阅读 评论(7) 收藏 举报 分类: 所有(165) Java ...
- Java Calendar类使用总结
平时在浏览一些网站时,有些网站会显示出当前时间,如现在是xx年xx月xx日 xx时xx分xx秒,在实际的开发过程中,也会涉及到日期和时间的计算,Java中提供了一个专门的类Calendar来处理日期与 ...
- Java Calendar类的使用总结【转】
感谢!原文地址:https://www.cnblogs.com/huangminwen/p/6041168.html Java Calendar类的使用总结 在实际项目当中,我们经常会涉及到对时间的处 ...
- Java Calendar类的使用总结
在实际项目当中,我们经常会涉及到对时间的处理,例如登陆网站,我们会看到网站首页显示XXX,欢迎您!今天是XXXX年....某些网站会记录下用户登陆的时间,比如银行的一些网站,对于这些经常需要处理的问题 ...
- Java - Calendar类的使用
今天在写代码时需要用到时间相关的类,一开始,数据库中存的数据类型是timestamp的,所以在Java中就使用了 Timestamp类型,但当调用Timestamp类型的方法时发现,它的很多方法都是d ...
- java Calendar类得到每个月的周末是几号的工具方法
public static List getWeekendInMonth(int year, int month) { List list = new ArrayList(); Calendar ca ...
- Java Calendar 类的时间操作.RP
JavaCalendar 类时间操作,这也许是创建和管理日历最简单的一个方案,示范代码很简单. 演示了获取时间,日期时间的累加和累减,以及比较. 原文地址:blog.csdn.NET/joyous/a ...
- Java Calendar类(java.util包)
Date 类最主要的作用就是获得当前时间,同时这个类里面也具有设置时间以及一些其他的功能,但是由于本身设计的问题,这些方法却遭到众多批评,不建议使用,更推荐使用 Calendar 类进行时间和日期的处 ...
随机推荐
- Linux Apache 给 awstats 创建 訪问password
CentOS7 安装最新版本号 awstats ,在httpd.conf 中增加了alias,能够直接訪问网址就进入 浏览.十分不安全. 给訪问加上password的方法: [root@localho ...
- gulp(基础篇)
今天在写项目的时候用到了gulp构建工具,虽然一年前就有用过,但是一直只存在于我的“有道云笔记”里,今天又一次用到,固然是巩固一下,这里来记录一下吧:这里我主要想要记录的就是初学者在第一次使用gulp ...
- 使用".."指定git提交范围与"..."指定git提交范围的区别
http://blog.csdn.net/hansel/article/details/8952967 使用".."(两个点)和"..."(三个点)都可以指定一 ...
- UVA 10042 Smith Numbers(数论)
Smith Numbers Background While skimming his phone directory in 1982, Albert Wilansky, a mathematicia ...
- webstorm 设置IP 访问 手机测试效果
http://www.cnblogs.com/gulei/p/5126383.html 前端开发中,经常需要将做好的页面给其他同事预览或手机测试,之前一直用的第三方本地服务器usbwebserver, ...
- Tomcat多实例 - 单机
最近在研究Apache+Tomcat+负载均衡/集群的过程中,发现了一篇好的在单机上部署多个tomcat实例的blog. 感受:关于Apache+Tomcat+负载均衡/集群,国内关于这方面的资料是挺 ...
- StringUtils类使用 (转载)
检查字符串是否为空或null或仅仅包含空格 String test = ""; String test1=" "; String test2 = &quo ...
- 嵌入式开发之cgic库---cgi库的使用
很幸运!用C语言写CGI程序还可以有比较简单的方式,那就是我们可以借助使用第三方库CGIC(CGIC是一个功能比较强大的支持CGI开发的标准C库,并支持Linux, Unix 和Windows等多操作 ...
- Android-Bundle的说明和用法
1.Bundle类的作用 Bundle类是一种数据载体,类似于Map,用于存放key-value名值对形式的值.相对于Map,它提供了各种常用类型的putXxx()/getXxx()方法, 如:put ...
- WEBRTC开发入门
WEBRTC "WebRTC,名称源自网页实时通信(Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的技术,是谷歌2010年以6 ...