在这里将我在项目中用到的一些关于使用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(二)的更多相关文章

  1. java:calendar类及一些比较实用的utils(一)

    在java编程中经常会用到时间日期的计算.比较.格式化等等操作,刚开始接触Calendar类时,还是在初学习期间,小小白一枚,看着这个好复杂,懒惰心理作祟也就没有怎么去学习,后来在项目中经常用到,索性 ...

  2. Java Calendar 类的时间操作

    Java Calendar 类的时间操作 标签: javaCalendar时间Date 2013-07-30 17:53 140401人阅读 评论(7) 收藏 举报 分类: 所有(165) Java ...

  3. Java Calendar类使用总结

    平时在浏览一些网站时,有些网站会显示出当前时间,如现在是xx年xx月xx日 xx时xx分xx秒,在实际的开发过程中,也会涉及到日期和时间的计算,Java中提供了一个专门的类Calendar来处理日期与 ...

  4. Java Calendar类的使用总结【转】

    感谢!原文地址:https://www.cnblogs.com/huangminwen/p/6041168.html Java Calendar类的使用总结 在实际项目当中,我们经常会涉及到对时间的处 ...

  5. Java Calendar类的使用总结

    在实际项目当中,我们经常会涉及到对时间的处理,例如登陆网站,我们会看到网站首页显示XXX,欢迎您!今天是XXXX年....某些网站会记录下用户登陆的时间,比如银行的一些网站,对于这些经常需要处理的问题 ...

  6. Java - Calendar类的使用

    今天在写代码时需要用到时间相关的类,一开始,数据库中存的数据类型是timestamp的,所以在Java中就使用了 Timestamp类型,但当调用Timestamp类型的方法时发现,它的很多方法都是d ...

  7. java Calendar类得到每个月的周末是几号的工具方法

    public static List getWeekendInMonth(int year, int month) { List list = new ArrayList(); Calendar ca ...

  8. Java Calendar 类的时间操作.RP

    JavaCalendar 类时间操作,这也许是创建和管理日历最简单的一个方案,示范代码很简单. 演示了获取时间,日期时间的累加和累减,以及比较. 原文地址:blog.csdn.NET/joyous/a ...

  9. Java Calendar类(java.util包)

    Date 类最主要的作用就是获得当前时间,同时这个类里面也具有设置时间以及一些其他的功能,但是由于本身设计的问题,这些方法却遭到众多批评,不建议使用,更推荐使用 Calendar 类进行时间和日期的处 ...

随机推荐

  1. ActiveX控件打包成Cab置于网页中自动下载安装

    [背景] http://www.360doc.com/content/13/1120/20/10159093_330853247.shtml 做过ActiveX控件的朋友都知道,要想把自己做的Acti ...

  2. Java IO 类

    IO包中绝大部分的类都是由以下四个类直接或间接继承来的InputStream OutputStream Reader 还有Writer 其中InputStream和OutputStream代表输入流和 ...

  3. UVA 10042 Smith Numbers(数论)

    Smith Numbers Background While skimming his phone directory in 1982, Albert Wilansky, a mathematicia ...

  4. jquery 插件ajaxupload 的简单应用

    var button = $('#upload_button');  //定义能够上传文件的按钮,就是一个普通的button var fileType = "zip",fileNu ...

  5. Android中通过GPS或NetWork获取当前位置的经纬度

    今天在Android项目中要实现一个通过GPS或NetWork来获取当前移动终端设备的经纬度功能.要实现该功能要用到Android Framework 中的 LocationManager 类.下面我 ...

  6. C# wince 实现软件忙鼠标状态改变

    eg: Cursor.Current = Cursors.WaitCursor; dosomething(); Cursor.Current = Cursors.Default; Cursor.Cur ...

  7. 小程序 富文本 的页面展示 json 数据处理 go-echo 为小程序提供feed流服务

    go生成页面 返回给web-view {{define "DBHtmlCode"}} <!DOCTYPE html> <html lang="zh-cm ...

  8. service oriented architecture 构造分布式计算的应用程序的方法 面向服务的架构 分解技术

    zh.wikipedia.org/wiki/面向服务的架构 [程序功能做为服务] 面向服务的体系结构(英语:service-oriented architecture)是构造分布式計算的应用程序的方法 ...

  9. Java Virtual Machine (JVM) objects 虚拟机实例的产生 退出 两种线程

    Apache Spark is built around a distributed collection of immutable Java Virtual Machine (JVM) object ...

  10. [SCOI2009] 最长距离

    题目描述 windy有一块矩形土地,被分为 NM 块 11 的小格子. 有的格子含有障碍物. 如果从格子A可以走到格子B,那么两个格子的距离就为两个格子中心的欧几里德距离. 如果从格子A不可以走到格子 ...