在这里将我在项目中用到的一些关于使用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. Linux安装Java/Maven

    所需文件:jdk 下载 安装Java INSTALL_PATH=/opt/soft TAR_FILE=/mnt/d/resources/soft/jdk-8u152-linux-x64.tar.gz ...

  2. JavaScript插件编写指南

    在编写插件之前,大家要先了解做插件的几个要点: 插件需要满足的条件 一个可复用的插件需要满足以下条件: 插件自身的作用域与用户当前的作用域相互独立,也就是插件内部的私有变量不能影响使用者的环境变量: ...

  3. Oracle数据库字符集解释

    转自:http://www.itpub.net/thread-836643-1-1.html Pl/SQL 执行select * from nls_database_parameters---可以查看 ...

  4. diff patch

    http://rails-deployment.group.iteye.com/group/wiki/1318-diff-and-patch-10-minutes-guide 情景一:你正尝试从代码编 ...

  5. UUID随机字符串

    public static void main(String[] args){ System.out.println(UUID.randomUUID().toString()); } //输出:698 ...

  6. ElasticSearch 分页检索

    在ElasticSearch的多索引和多类别里说到我们在集群中有14个文档匹配我们的(空)搜索语句.单数仅仅有10个文档在hits数组中.我们怎样看到其它文档? 和SQL使用LIMITkeyword返 ...

  7. C# 之 集合ArrayList

    .NET Framework提供了用于数据存储和检索的专用类,这些类统称集合. 这些类提供对堆栈.队列.列表和哈希表的支持.大多数集合类实现系统的接口.以下我们主要来讲一下ArrayList.     ...

  8. JSP学习笔记(一)

    JSP是基于JAVA语言的,区分大小写,HTML不区分大小写 如何建立Web服务目录? 1.在Webapps下面建立Web服务目录MYJSP 在Webapps下面新建文件夹MYJSP,将写好的jsp文 ...

  9. java 重定向和转发(转载)

    jsp中result的默认类型为dispatcher. dispatcher:与<jsp:forward page=""/>效果相同 redirect:与respons ...

  10. angular cannot get /

    每次遇到这问题都一脸懵逼,好像自己啥都没改咋就悲剧了 目前知道的办法是在命令行运行ng serve,它会告诉你详细错误 因为我是通过asp.net core的集成环境运行的,它没显示出详细错误