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 类进行时间和日期的处 ...
随机推荐
- jdk的动态代理源代码解析
先看一下JDK的动态是怎么用的. package dynamic.proxy; import java.lang.reflect.InvocationHandler; import java.lang ...
- Ajax 跨域难题 - 原生 JS 和 jQuery 的实现对比
讲解顺序: AJAX 的概念及由来 JS 和 jQuery 中的 ajax 浏览器机制 AJAX 跨域 AJAX 的概念 在讲解 AJAX 的概念之前,我先提一个问题. 这是一个典型的 B/S 模式. ...
- Cocos2d-x移植安卓的笔记
一.下载所需软件 Java SDK http://www.oracle.com/technetwork/java/javase/downloads/index.html Windows x64 ...
- IDEA 适用技巧
快速打印 sout - System.out.println(); serr - System.err.println(); //在控制台中是红色的 输入sout,按下enter键,生成System. ...
- 编程算法 - 多重部分和问题 代码(C)
多重部分和问题 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 有n种不同大小的数字a, 每种各m个. 推断能否够从这些数字之中选出若干使它们的 ...
- FALSE_IT
本文讲一个实用的语法糖(suger),很不错,攻克了我实际工作中的问题. 如果你写了这样一个类: class Executor { int step1(); void step2(); int ste ...
- 【BZOJ4668】冷战 并查集
[BZOJ4668]冷战 Description 1946 年 3 月 5 日,英国前首相温斯顿·丘吉尔在美国富尔顿发表“铁幕演说”,正式拉开了冷战序幕. 美国和苏联同为世界上的“超级大国”,为了争夺 ...
- JS中正则匹配开头不带空格,结尾也不带空格的字符串
在做项目的时候,要求限制SSID的长度.以及开头和结尾不能是空格. var reg = /^\S.{0,30}\S$/ "$$$ $$".match(reg); ==> ...
- 相机标定过程(opencv) + matlab参数导入opencv + matlab标定和矫正
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 辛苦原创所得,转载请注明出处 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ...
- Template Pattern
1.Template模式解决的问题:对于某一个业务逻辑在不同的对象中有不同的细节实现,但是逻辑的框架是相同的.将逻辑框架放在抽象基类中,并定义好细节的接口,子类中实现细节.Template模式利用多态 ...