`

日期操作类

 
阅读更多

package utils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Map;

 

public class DateUtil {

 public static String STARTDATE = "startDate";
 public static String ENDDATE = "endDate";
 public static String WEEKNUM = "weekNum";

 

 public static String getStrOfDate(Date date) {
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  return sdf.format(date);
 }

 

 public static String getStrOfMonth(Date date) {
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
  return sdf.format(date);
 }

 

 public static String getStrOfYear(Date date) {
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
  return sdf.format(date);
 }

 

 // 取某一天的一个月后的日期
 public static String getNextMonthDay(String str) throws Exception {
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
  gc.setTime(sdf.parse(str));
  gc.add(Calendar.MONTH, +1);
  return getStrOfDate(gc.getTime());
 }

 

 // 取某个月的上个月
 public static String getPreMonth(String str) throws Exception {
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
  GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
  gc.setTime(sdf.parse(str));
  gc.add(Calendar.MONTH, -1);
  return getStrOfDate(gc.getTime());
 }

 

 // 取某个月的下个月
 public static String getNextMonth(String str) throws Exception {
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
  GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
  gc.setTime(sdf.parse(str));
  gc.add(Calendar.MONTH, +1);
  return getStrOfDate(gc.getTime());
 }

 

 // 取某一天的一周前的日期
 public static String getPreWeekDay(String str) throws Exception {
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
  gc.setTime(sdf.parse(str));
  gc.add(Calendar.DATE, -6);
  return getStrOfDate(gc.getTime());
 }

 

 // 取某一天的一周前的日期
 public static String getPWeekDay(String str) throws Exception {
  SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
  GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
  gc.setTime(sdf.parse(str));
  gc.add(Calendar.DATE, -6);
  return getStrOfDate(gc.getTime());
 }

 

 public static String getCurrentStrDate() {
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  Date date = new Date(System.currentTimeMillis());
  return sdf.format(date);
 }

 

 public static String getCurrentStrMonth() {
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
  Date date = new Date(System.currentTimeMillis());
  return sdf.format(date);
 }

 

 // 取当年
 public static String getCurrentStrYear() {
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
  Date date = new Date(System.currentTimeMillis());
  return sdf.format(date);
 }

 

 // 取上一年
 public static String getPreYear() {
  GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
  gc.setTime(new Date(System.currentTimeMillis()));
  gc.add(Calendar.YEAR, -1);
  return getStrOfYear(gc.getTime());
 }

 

 // 取上个月
 public static String getPreMonth() {
  GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
  gc.setTime(new Date(System.currentTimeMillis()));
  gc.add(Calendar.MONTH, -1);
  return getStrOfMonth(gc.getTime());
 }

 

 // 取一个月前的日期
 public static String getPreMonthDay() {
  GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
  gc.setTime(new Date(System.currentTimeMillis()));
  gc.add(Calendar.MONTH, -1);
  gc.add(Calendar.DATE, 1);
  return getStrOfDate(gc.getTime());
 }

 

 // 取前一天
 public static String getStrOfPreDate() {
  GregorianCalendar gc = new GregorianCalendar();
  gc.add(GregorianCalendar.DATE, -1);
  return getStrOfDate(gc.getTime());
 }

 

 // 取当月第一天
 public static String getStrOfFirstDate() {
  GregorianCalendar gc = new GregorianCalendar();
  gc.add(GregorianCalendar.DATE,
    -gc.get(GregorianCalendar.DAY_OF_MONTH) + 1);
  return getStrOfDate(gc.getTime());
 }

 

 // 取当月最后一天
 public static String getStrOfLastDate() {
  GregorianCalendar gc = new GregorianCalendar();
  gc.add(GregorianCalendar.MONTH, 1);
  gc.add(GregorianCalendar.DATE, -gc.get(GregorianCalendar.DAY_OF_MONTH));
  return getStrOfDate(gc.getTime());
 }

 

 /**
  * 获取日期所在周的第一天及最后一天,并求出其为一年中的第几周
  *
  * @param date
  * @return
  */
 public static Map<String, String> getDaysOfWeek(String date) {
  String startDate = "";
  String endDate = "";
  String weekNum = "";
  Calendar cal = Calendar.getInstance();
  Map<String, String> dates = new HashMap<String, String>();

  // 获取日期格式化对象
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

  // 将字符串解析为Calendar
  try {
   cal.setTime(sdf.parse(date));
  } catch (Exception e) {
   e.printStackTrace();
  }

  // 获取当前日期为一周当中第几天(MONDAY=2,TUESDAY=3,WEDNESDAY=4,THURSDAY=5,FRIDAY=6,SATURDAY=7,SUNDAY=1)
  Integer day = cal.get(Calendar.DAY_OF_WEEK);

  // 获取当前规则下,一周的第一天,将周六做为一周的开始
  if (day == 7) {
   startDate = sdf.format(cal.getTime());
  } else {
   cal.add(Calendar.DATE, -day);
   startDate = sdf.format(cal.getTime());
  }

  // 获取当前规则下,一周的最后一天
  cal.add(Calendar.DATE, 6);
  endDate = sdf.format(cal.getTime());

  // 将周六做为一周的开始
  cal.setFirstDayOfWeek(Calendar.SATURDAY);
  // 获取当前日期是一年中的第几周
  weekNum = Integer.toString(cal.get(Calendar.WEEK_OF_YEAR));

  // 将获取的数据存入Map中
  dates.put(STARTDATE, startDate);
  dates.put(ENDDATE, endDate);
  dates.put(WEEKNUM, weekNum);

  return dates;
 }

 

 /**
  * 获取日期所在周的第一天及最后一天,并求出其为一年中的第几周
  *
  * @param date
  * @return
  */
 public static Map<String, String> getDaysOfWeek(Date date) {
  String startDate = "";
  String endDate = "";
  String weekNum = "";
  Calendar cal = Calendar.getInstance();
  cal.setTime(date);

  Map<String, String> dates = new HashMap<String, String>();

  // 获取日期格式化对象
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

  // 将周六做为一周的开始(MONDAY=2,TUESDAY=3,WEDNESDAY=4,THURSDAY=5,FRIDAY=6,SATURDAY=7,SUNDAY=1)
  cal.setFirstDayOfWeek(Calendar.SATURDAY);
  // 获取当前规则下,一周的第一天
  cal.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
  startDate = sdf.format(cal.getTime());
  // 获取当前规则下,一周的最后一天
  cal.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
  endDate = sdf.format(cal.getTime());

  // 获取当前日期是一年中的第几周
  weekNum = Integer.toString(cal.get(Calendar.WEEK_OF_YEAR));

  // 将获取的数据存入Map中
  dates.put(STARTDATE, startDate);
  dates.put(ENDDATE, endDate);
  dates.put(WEEKNUM, weekNum);

  return dates;
 }

 

 /**
  * 返回一年中某一周的开始日期及结束日期
  *
  * @param year
  * @param week
  * @return
  */
 public static Map<String, String> getDaysOfWeek(Integer year, Integer week) {
  String startDate = "";
  String endDate = "";
  Map<String, String> dates = new HashMap<String, String>();

  // 获取日历对像
  Calendar cal = Calendar.getInstance();

  // 设置时间
  cal.set(cal.YEAR, year);

  // 将周六做为一周的开始(MONDAY=2,TUESDAY=3,WEDNESDAY=4,THURSDAY=5,FRIDAY=6,SATURDAY=7,SUNDAY=1)
  cal.setFirstDayOfWeek(Calendar.SATURDAY);

  // 将日历调整到第week周
  cal.set(cal.WEEK_OF_YEAR, week);

  // 调整日期到周五
  cal.set(cal.DAY_OF_WEEK, Calendar.FRIDAY);

  // 获取日期格式化对象
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

  // 格式化时间
  endDate = sdf.format(cal.getTime());

  // 将当前时间向前推移6天
  cal.add(Calendar.DATE, -6);

  // 格式化时间
  startDate = sdf.format(cal.getTime());

  // 将格式化完成的时间放入Map中
  dates.put(STARTDATE, startDate);
  dates.put(ENDDATE, endDate);

  return dates;
 }

 

 /**
  * 返回一年中某一周的开始日期及结束日期
  *
  * @param year
  * @param week
  * @return
  */
 public static Map<String, String> getDaysOfWeek(Date date, Integer week) {
  String startDate = "";
  String endDate = "";
  Map<String, String> dates = new HashMap<String, String>();

  // 获取日历对像
  Calendar cal = Calendar.getInstance();

  // 设置时间
  cal.setTime(date);

  // 将日历调整到第week周
  cal.set(cal.WEEK_OF_YEAR, week);

  // 获取日期格式化对象
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

  // 将周六做为一周的开始(MONDAY=2,TUESDAY=3,WEDNESDAY=4,THURSDAY=5,FRIDAY=6,SATURDAY=7,SUNDAY=1)
  cal.setFirstDayOfWeek(Calendar.SATURDAY);
  // 获取当前规则下,一周的第一天
  cal.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
  startDate = sdf.format(cal.getTime());
  // 获取当前规则下,一周的最后一天
  cal.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
  endDate = sdf.format(cal.getTime());

  // 将格式化完成的时间放入Map中
  dates.put(STARTDATE, startDate);
  dates.put(ENDDATE, endDate);

  return dates;
 }

 

 public static Date StrToDate(String str) {
  SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  String[] dateStr = str.split(":", -1);
  if (dateStr.length == 2) {
   format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
  }
  if (dateStr.length == 1) {
   format = new SimpleDateFormat("yyyy-MM-dd");
  }
  Date date = null;
  try {
   date = format.parse(str);
  } catch (ParseException e) {
   e.printStackTrace();
  }
  return date;
 }

 

 public static void main(String[] args) {
  String d = getCurrentStrDate();
  System.out.println(getDaysOfWeek(d));
  System.out.println("--------------------------");
  System.out.println(getDaysOfWeek(new Date()));
  System.out.println("==========================");
  System.out.println(getDaysOfWeek(new Integer(2011), 1));
  System.out.println("--------------------------");
  System.out.println(getDaysOfWeek(new Date(), 1));
 }
}

分享到:
评论

相关推荐

    java日期操作类

    java日期操作类 操作java日期 替换simplatedateformate

    JAVA日期操作类详细讲解

    本篇内容将深入讲解Java中的日期操作类,这对于Java初学者来说是非常重要的知识点。 首先,我们要了解Java中的基础日期类`java.util.Date`。这个类在早期的Java版本中被广泛使用,但其API设计存在一些问题,例如不...

    java实现的日期操作类

    标题提到的"java实现的日期操作类"通常指的是使用这些类来完成特定的日期计算任务,如获取星期几或计算未来的日期。 `java.util.Date`是Java早期用来表示日期和时间的类,但它的API设计并不理想,易用性较差。因此...

    欧柏泰克:Java常用类库--日期操作类

    欧柏泰克:Java常用类库--日期操作类 在 Java 语言中,日期操作类是非常重要的一部分,常用的日期操作类有 Date 类、Calendar 类和 DateFormat 类。下面是对这三个类的详细介绍: Date 类 Date 类是 Java 语言中...

    日期操作类(Date、Calendar)笔记

    031105_【第11章:Java常用类库】_日期操作类(Date、Calendar)笔记

    c# 日历、日期操作类

    c# 日历、日期操作类 公历农历转换等 节气节日对应 等操作

    Java日期操作类常见用法示例

    Java日期操作类常见用法示例 Java日期操作类是Java语言中用于处理日期和时间的类库,主要包括java.time包下的LocalDateTime、LocalDate、LocalTime等类。这些类提供了丰富的方法来处理日期和时间,包括获取当前日期...

    Java常用类库StringBuffer,Runtime,日期操作类等类库总结

    Java常用类库StringBuffer、Runtime、日期操作类等类库总结 Java程序设计语言中有许多实用的类库,今天我们将对StringBuffer、Runtime、日期操作类等类库进行总结。 StringBuffer类 StringBuffer类是Java中一个可...

    日期操作类(Date、Calendar)

    NULL 博文链接:https://chaoyi.iteye.com/blog/2082315

    DateUtil:日期操作类 自用

    DateUtil日期操作类 自用其中包括很多常用日期操作1.Date --&gt; String2.String --&gt; Date3.获取年龄4.获取两个日期相差的天数5.Dateformat6.获取日期中的某数值。如获取月份7.增加日期中某类型的某数值。如增加...

    日期操作类(DateFormat、SimpleDateFormat)

    NULL 博文链接:https://chaoyi.iteye.com/blog/2082317

    zihaopang#Backen-develope#第九章:日期操作类1

    范例:格式化日期显示public static void main(String[] args) {String str = sdf.format(date);

    日期操作工具类

    比较全面的日期操作类,可以直接下载后使用就可以了,

    最牛.Net公共类库,.net 开发类库Cmn

    Date 日期操作类 FileFolder 文件目录操作类 Identify 验证码 Js Js操作类 Log 日志管理类 Msg 输出消息类 Net 网络操作类 Rand 生成随机数类 Request Request操作类 Safe 安全操作类 Session Session...

    js实现的日期操作类DateTime函数代码

    JavaScript中的日期操作往往依赖于内置的`Date`对象,但有时候它的使用可能不够直观或符合开发者的编程习惯。为了提供类似C#中的`DateTime`类的功能,我们可以创建一个自定义的`DateTime`类来增强日期处理的能力。这...

    python 日期操作类代码

    '''获取当前日期前后N天或N月的日期''' from time import strftime, localtime from datetime import timedelta, date import calendar year = strftime("%Y",localtime()) mon = strftime("%m",localtime()) day = ...

    c++中的日期操作(包含CString类型的部分操作)

    自制C++中应用的日期操作类 操作天数的增减 操作月数的增减 操作年数的增减 获取日期所在月有几周 获取日期所在的周一 获取日期所在的周日 获取日期所在月的第几周周一 获取日期所在月的第几周周日 获取日期星期...

Global site tag (gtag.js) - Google Analytics