JAVA日期查询:季度、月份、星期等时间信息
- package com.stt.dateChange;
- import java.text.SimpleDateFormat;
- import java.util.Calendar;
- import java.util.Date;
- import org.apache.commons.logging.Log;
- import org.apache.commons.logging.LogFactory;
- /**
- *
- * @author zengms
- * @date 2012-12-27
- *
- */
- public class DateUtils {
- private static final Log logger = LogFactory.getLog(DateUtils.class);
- public static final String YYYYMMDD = "yyyy-MM-dd";
- public static final String YYYYMMDD_ZH = "yyyy年MM月dd日";
- public static final int FIRST_DAY_OF_WEEK = Calendar.MONDAY; // 中国周一是一周的第一天
- /**
- *
- * @param strDate
- * @return
- */
- public static Date parseDate(String strDate) {
- return parseDate(strDate, null);
- }
- /**
- * parseDate
- *
- * @param strDate
- * @param pattern
- * @return
- */
- public static Date parseDate(String strDate, String pattern) {
- Date date = null;
- try {
- if (pattern == null) {
- pattern = YYYYMMDD;
- }
- SimpleDateFormat format = new SimpleDateFormat(pattern);
- date = format.parse(strDate);
- } catch (Exception e) {
- logger.error("parseDate error:" + e);
- }
- return date;
- }
- /**
- * format date
- *
- * @param date
- * @return
- */
- public static String formatDate(Date date) {
- return formatDate(date, null);
- }
- /**
- * format date
- *
- * @param date
- * @param pattern
- * @return
- */
- public static String formatDate(Date date, String pattern) {
- String strDate = null;
- try {
- if (pattern == null) {
- pattern = YYYYMMDD;
- }
- SimpleDateFormat format = new SimpleDateFormat(pattern);
- strDate = format.format(date);
- } catch (Exception e) {
- logger.error("formatDate error:", e);
- }
- return strDate;
- }
- /**
- * 取得日期:年
- *
- * @param date
- * @return
- */
- public static int getYear(Date date) {
- Calendar c = Calendar.getInstance();
- c.setTime(date);
- int year = c.get(Calendar.YEAR);
- return year;
- }
- /**
- * 取得日期:年
- *
- * @param date
- * @return
- */
- public static int getMonth(Date date) {
- Calendar c = Calendar.getInstance();
- c.setTime(date);
- int month = c.get(Calendar.MONTH);
- return month + 1;
- }
- /**
- * 取得日期:年
- *
- * @param date
- * @return
- */
- public static int getDay(Date date) {
- Calendar c = Calendar.getInstance();
- c.setTime(date);
- int da = c.get(Calendar.DAY_OF_MONTH);
- return da;
- }
- /**
- * 取得当天日期是周几
- *
- * @param date
- * @return
- */
- public static int getWeekDay(Date date) {
- Calendar c = Calendar.getInstance();
- c.setTime(date);
- int week_of_year = c.get(Calendar.DAY_OF_WEEK);
- return week_of_year - 1;
- }
- /**
- * 取得一年的第几周
- *
- * @param date
- * @return
- */
- public static int getWeekOfYear(Date date) {
- Calendar c = Calendar.getInstance();
- c.setTime(date);
- int week_of_year = c.get(Calendar.WEEK_OF_YEAR);
- return week_of_year;
- }
- /**
- * getWeekBeginAndEndDate
- *
- * @param date
- * @param pattern
- * @return
- */
- public static String getWeekBeginAndEndDate(Date date, String pattern) {
- Date monday = getMondayOfWeek(date);
- Date sunday = getSundayOfWeek(date);
- return formatDate(monday, pattern) + " - "
- + formatDate(sunday, pattern);
- }
- /**
- * 根据日期取得对应周周一日期
- *
- * @param date
- * @return
- */
- public static Date getMondayOfWeek(Date date) {
- Calendar monday = Calendar.getInstance();
- monday.setTime(date);
- monday.setFirstDayOfWeek(FIRST_DAY_OF_WEEK);
- monday.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
- return monday.getTime();
- }
- /**
- * 根据日期取得对应周周日日期
- *
- * @param date
- * @return
- */
- public static Date getSundayOfWeek(Date date) {
- Calendar sunday = Calendar.getInstance();
- sunday.setTime(date);
- sunday.setFirstDayOfWeek(FIRST_DAY_OF_WEEK);
- sunday.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
- return sunday.getTime();
- }
- /**
- * 取得月的剩余天数
- *
- * @param date
- * @return
- */
- public static int getRemainDayOfMonth(Date date) {
- int dayOfMonth = getDayOfMonth(date);
- int day = getPassDayOfMonth(date);
- return dayOfMonth - day;
- }
- /**
- * 取得月已经过的天数
- *
- * @param date
- * @return
- */
- public static int getPassDayOfMonth(Date date) {
- Calendar c = Calendar.getInstance();
- c.setTime(date);
- return c.get(Calendar.DAY_OF_MONTH);
- }
- /**
- * 取得月天数
- *
- * @param date
- * @return
- */
- public static int getDayOfMonth(Date date) {
- Calendar c = Calendar.getInstance();
- c.setTime(date);
- return c.getActualMaximum(Calendar.DAY_OF_MONTH);
- }
- /**
- * 取得月第一天
- *
- * @param date
- * @return
- */
- public static Date getFirstDateOfMonth(Date date) {
- Calendar c = Calendar.getInstance();
- c.setTime(date);
- c.set(Calendar.DAY_OF_MONTH, c.getActualMinimum(Calendar.DAY_OF_MONTH));
- return c.getTime();
- }
- /**
- * 取得月最后一天
- *
- * @param date
- * @return
- */
- public static Date getLastDateOfMonth(Date date) {
- Calendar c = Calendar.getInstance();
- c.setTime(date);
- c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH));
- return c.getTime();
- }
- /**
- * 取得季度第一天
- *
- * @param date
- * @return
- */
- public static Date getFirstDateOfSeason(Date date) {
- return getFirstDateOfMonth(getSeasonDate(date)[0]);
- }
- /**
- * 取得季度最后一天
- *
- * @param date
- * @return
- */
- public static Date getLastDateOfSeason(Date date) {
- return getLastDateOfMonth(getSeasonDate(date)[2]);
- }
- /**
- * 取得季度天数
- *
- * @param date
- * @return
- */
- public static int getDayOfSeason(Date date) {
- int day = 0;
- Date[] seasonDates = getSeasonDate(date);
- for (Date date2 : seasonDates) {
- day += getDayOfMonth(date2);
- }
- return day;
- }
- /**
- * 取得季度剩余天数
- *
- * @param date
- * @return
- */
- public static int getRemainDayOfSeason(Date date) {
- return getDayOfSeason(date) - getPassDayOfSeason(date);
- }
- /**
- * 取得季度已过天数
- *
- * @param date
- * @return
- */
- public static int getPassDayOfSeason(Date date) {
- int day = 0;
- Date[] seasonDates = getSeasonDate(date);
- Calendar c = Calendar.getInstance();
- c.setTime(date);
- int month = c.get(Calendar.MONTH);
- if (month == Calendar.JANUARY || month == Calendar.APRIL
- || month == Calendar.JULY || month == Calendar.OCTOBER) {// 季度第一个月
- day = getPassDayOfMonth(seasonDates[0]);
- } else if (month == Calendar.FEBRUARY || month == Calendar.MAY
- || month == Calendar.AUGUST || month == Calendar.NOVEMBER) {// 季度第二个月
- day = getDayOfMonth(seasonDates[0])
- + getPassDayOfMonth(seasonDates[1]);
- } else if (month == Calendar.MARCH || month == Calendar.JUNE
- || month == Calendar.SEPTEMBER || month == Calendar.DECEMBER) {// 季度第三个月
- day = getDayOfMonth(seasonDates[0]) + getDayOfMonth(seasonDates[1])
- + getPassDayOfMonth(seasonDates[2]);
- }
- return day;
- }
- /**
- * 取得季度月
- *
- * @param date
- * @return
- */
- public static Date[] getSeasonDate(Date date) {
- Date[] season = new Date[3];
- Calendar c = Calendar.getInstance();
- c.setTime(date);
- int nSeason = getSeason(date);
- if (nSeason == 1) {// 第一季度
- c.set(Calendar.MONTH, Calendar.JANUARY);
- season[0] = c.getTime();
- c.set(Calendar.MONTH, Calendar.FEBRUARY);
- season[1] = c.getTime();
- c.set(Calendar.MONTH, Calendar.MARCH);
- season[2] = c.getTime();
- } else if (nSeason == 2) {// 第二季度
- c.set(Calendar.MONTH, Calendar.APRIL);
- season[0] = c.getTime();
- c.set(Calendar.MONTH, Calendar.MAY);
- season[1] = c.getTime();
- c.set(Calendar.MONTH, Calendar.JUNE);
- season[2] = c.getTime();
- } else if (nSeason == 3) {// 第三季度
- c.set(Calendar.MONTH, Calendar.JULY);
- season[0] = c.getTime();
- c.set(Calendar.MONTH, Calendar.AUGUST);
- season[1] = c.getTime();
- c.set(Calendar.MONTH, Calendar.SEPTEMBER);
- season[2] = c.getTime();
- } else if (nSeason == 4) {// 第四季度
- c.set(Calendar.MONTH, Calendar.OCTOBER);
- season[0] = c.getTime();
- c.set(Calendar.MONTH, Calendar.NOVEMBER);
- season[1] = c.getTime();
- c.set(Calendar.MONTH, Calendar.DECEMBER);
- season[2] = c.getTime();
- }
- return season;
- }
- /**
- *
- * 1 第一季度 2 第二季度 3 第三季度 4 第四季度
- *
- * @param date
- * @return
- */
- public static int getSeason(Date date) {
- int season = 0;
- Calendar c = Calendar.getInstance();
- c.setTime(date);
- int month = c.get(Calendar.MONTH);
- switch (month) {
- case Calendar.JANUARY:
- case Calendar.FEBRUARY:
- case Calendar.MARCH:
- season = 1;
- break;
- case Calendar.APRIL:
- case Calendar.MAY:
- case Calendar.JUNE:
- season = 2;
- break;
- case Calendar.JULY:
- case Calendar.AUGUST:
- case Calendar.SEPTEMBER:
- season = 3;
- break;
- case Calendar.OCTOBER:
- case Calendar.NOVEMBER:
- case Calendar.DECEMBER:
- season = 4;
- break;
- default:
- break;
- }
- return season;
- }
- public static void main(String[] args) {
- String strDate = "2013-01-01";
- Date date = parseDate(strDate);
- System.out.println(strDate + " 今天是哪一年?" + getYear(date));
- System.out.println(strDate + " 今天是哪个月?" + getMonth(date));
- System.out.println(strDate + " 今天是几号?" + getDay(date));
- System.out.println(strDate + " 今天是周几?" + getWeekDay(date));
- System.out.println(strDate + " 是一年的第几周?" + getWeekOfYear(date));
- System.out.println(strDate + " 所在周起始结束日期?"
- + getWeekBeginAndEndDate(date, "yyyy年MM月dd日"));
- System.out.println(strDate + " 所在周周一是?"
- + formatDate(getMondayOfWeek(date)));
- System.out.println(strDate + " 所在周周日是?"
- + formatDate(getSundayOfWeek(date)));
- System.out.println(strDate + " 当月第一天日期?"
- + formatDate(getFirstDateOfMonth(date)));
- System.out.println(strDate + " 当月最后一天日期?"
- + formatDate(getLastDateOfMonth(date)));
- System.out.println(strDate + " 当月天数?" + getDayOfMonth(date));
- System.out.println(strDate + " 当月已过多少天?" + getPassDayOfMonth(date));
- System.out.println(strDate + " 当月剩余多少天?" + getRemainDayOfMonth(date));
- System.out.println(strDate + " 所在季度第一天日期?"
- + formatDate(getFirstDateOfSeason(date)));
- System.out.println(strDate + " 所在季度最后一天日期?"
- + formatDate(getLastDateOfSeason(date)));
- System.out.println(strDate + " 所在季度天数?" + getDayOfSeason(date));
- System.out.println(strDate + " 所在季度已过多少天?" + getPassDayOfSeason(date));
- System.out
- .println(strDate + " 所在季度剩余多少天?" + getRemainDayOfSeason(date));
- System.out.println(strDate + " 是第几季度?" + getSeason(date));
- System.out.println(strDate + " 所在季度月份?"
- + formatDate(getSeasonDate(date)[0], "yyyy年MM月") + "/"
- + formatDate(getSeasonDate(date)[1], "yyyy年MM月") + "/"
- + formatDate(getSeasonDate(date)[2], "yyyy年MM月"));
- }
- }
JAVA日期查询:季度、月份、星期等时间信息的更多相关文章
- Oracle日期查询:季度、月份、星期等时间信息
--oracle有关时间信息 Select to_char(sysdate,'Q') from dual;--指定日期的季度 Select to_char(sysdate,'MM') from dua ...
- Lucene4.6 把时间信息写入倒排索引的Offset偏移量中,并实现按时间位置查询
有个新的技术需求,需要对Lucene4.x的源码进行扩展,把如下的有时间位置的文本写入倒排索引,为此,我扩展了一个TimeTokenizer分词器,在这个分词器里将时间信息写入 偏移量Offset中. ...
- java 和 mysql 获取周 星期 的第一天 最后一天 或者 月的 日期(字符串转日期,日期转字符串,日期加减)
获取周的第一天,最后一天 System.out.println(getStartEndDate("2016-05-01", 1)); 获取星期的第一天和最后一天 System.ou ...
- Java日期时间API系列8-----Jdk8中java.time包中的新的日期时间API类的LocalDate源码分析
目录 0.前言 1.TemporalAccessor源码 2.Temporal源码 3.TemporalAdjuster源码 4.ChronoLocalDate源码 5.LocalDate源码 6.总 ...
- [Java]Java日期及时间库插件 -- Joda Time.
来到新公司工作也有一个多月了, 陆陆续续做了一些简单的项目. 今天做一个新东西的时候发现了 Joda Time的这个东西, 因为以前用的都是JDK原生的时间处理API, 大家都知道Java原生的时间处 ...
- [转]Java日期时间使用总结
原文地址:http://lavasoft.blog.51cto.com/62575/52975/ 一.Java中的日期概述 日期在Java中是一块非常复杂的内容,对于一个日期在不同的语言国别环境中 ...
- java JDK8 学习笔记——第13章 时间与日期
第十三章 时间与日期 13.1 认识时间与日期 13.1.1 时间的度量 1.格林威治标准时间GMT 格林威治标准时间的正午是太阳抵达天空最高点之时.现在已经不作为标准时间使用. 2.世界时UT世界时 ...
- Java日期时间使用总结
一.Java中的日期概述 日期在Java中是一块非常复杂的内容,对于一个日期在不同的语言国别环境中,日期的国际化,日期和时间之间的转换,日期的加减运算,日期的展示格式都是非常复杂的问题. 在J ...
- Java 日期时间
Java 日期时间 标签 : Java基础 Date java.util.Date对象表示一个精确到毫秒的瞬间; 但由于Date从JDK1.0起就开始存在了,历史悠久,而且功能强大(既包含日期,也包含 ...
随机推荐
- 请指出document load和document ready的区别?
共同点:这两种事件都代表的是页面文档加载时触发. 异同点: ready 事件的触发,表示文档结构已经加载完成(不包含图片等非文字媒体文件). onload 事件的触发,表示页面包含图片等文件在内的所有 ...
- V-rep学习笔记:视觉传感器2
视觉传感器的属性设置栏中还有如下几个选项: Ignore RGB info (faster): if selected, the RGB information of the sensor (i.e. ...
- Docker Swarm Mode无法增加管理节点
这两天用Docker Swarm Mode,加入新的管理节点会报以下错误(在/var/log/messages文件中可以看到): Handler for POST /v1.37/swarm/join ...
- Linux和windows下内核socket优化项 (转)
问题: No buffer space available Linux: vi /etc/sysctl.conf net.core.netdev_max_backlog = 30000 每个网络接口 ...
- 二维码Data Matrix简单介绍及在VS2010中的编译
Data Matrix 二维条码原名Datacode,由美国国际资料公司(International Data Matrix, 简称ID Matrix)于1989年发明.Data-Matrix二维条码 ...
- Visual Studio 2015新添加宏
这个宏是类似环境变量,比如$(ProjectDir) $(SolutionDir),这样的,我需要新添加一个变量宏,但是VS的GUI上貌似找不到新的变量的设置,但是Qt的VS插件可以设置$(QTDIR ...
- Android如何设置TextView的行间距、行高。
Android系统中TextView默认行间距比较窄,不美观. 我们可以设置每行的行间距,可以通过属性android:lineSpacingExtra或android:lineSpa ...
- ios中coredata
http://blog.csdn.net/q199109106q/article/details/8563438 // // MJViewController.m // 数据存储5-Core Data ...
- Linux实例安装VNC Server实现图形化访问
引自阿里云: https://help.aliyun.com/knowledge_detail/41530.html
- 【DeepLearning】Exercise: Implement deep networks for digit classification
Exercise: Implement deep networks for digit classification 习题链接:Exercise: Implement deep networks fo ...