`

日期操作汇总

阅读更多
计算某一月份的最大天数
   Calendar time=Calendar.getInstance();
   time.clear();
   time.set(Calendar.YEAR,year);
   time.set(Calendar.MONTH,i-1);//注意,Calendar对象默认一月为0           
   int day=time.getActualMaximum(Calendar.DAY_OF_MONTH);//本月份的天数
   注:在使用set方法之前,必须先clear一下,否则很多信息会继承自系统当前时间
2.Calendar和Date的转化
(1) Calendar转化为Date
   Calendar cal=Calendar.getInstance();
   Date date=cal.getTime();
(2) Date转化为Calendar
   Date date=new Date();
   Calendar cal=Calendar.getInstance();
   cal.setTime(date);
3.格式化输出日期时间
   Date date=new Date();
   SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
   System.out.println(df.format(date));
4.计算一年中的第几星期
(1)计算某一天是一年中的第几星期
   Calendar cal=Calendar.getInstance();
   cal.set(Calendar.YEAR, 2006);
   cal.set(Calendar.MONTH,;
   cal.set(Calendar.DAY_OF_MONTH, 3);
   int weekno=cal.get(Calendar.WEEK_OF_YEAR);
(2)计算一年中的第几星期是几号
   SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
   Calendar cal=Calendar.getInstance();
   cal.set(Calendar.YEAR, 2006);
   cal.set(Calendar.WEEK_OF_YEAR, 1);
   cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
   System.out.println(df.format(cal.getTime()));
   输出:
   2006-01-02
5.add()和roll()的用法
(1)add()方法
   SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
   Calendar cal=Calendar.getInstance();
   cal.set(Calendar.YEAR, 2006);
   cal.set(Calendar.MONTH,;
   cal.set(Calendar.DAY_OF_MONTH, 3);
   cal.add(Calendar.DATE, -4);
   Date date=cal.getTime();
   System.out.println(df.format(date));
   cal.add(Calendar.DATE, 4);
   date=cal.getTime();
   System.out.println(df.format(date));
   输出:
      2006-08-30
      2006-09-03
(2)roll方法
   cal.set(Calendar.YEAR, 2006);
   cal.set(Calendar.MONTH,;
   cal.set(Calendar.DAY_OF_MONTH, 3);
   cal.roll(Calendar.DATE, -4);
   date=cal.getTime();
   System.out.println(df.format(date));
   cal.roll(Calendar.DATE, 4);
   date=cal.getTime();
   System.out.println(df.format(date));
   输出:
      2006-09-29
      2006-09-03
   可见,roll()方法在本月内循环,一般使用add()方法;
6.计算两个任意时间中间的间隔天数
(1)传进Calendar对象

      public int getIntervalDays(Calendar startday,Calendar endday)...{
          //确保startday在endday之前
          if(startday.after(endday))...{
              Calendar cal=startday;
              startday=endday;
              endday=cal;
          }
          //分别得到两个时间的毫秒数
          long sl=startday.getTimeInMillis();
          long el=endday.getTimeInMillis();
       
          long ei=el-sl;   
          //根据毫秒数计算间隔天数
          return (int)(ei/(1000*60*60*24));
      }
(2)传进Date对象

      public int getIntervalDays(Date startday,Date endday)...{
          //确保startday在endday之前
          if(startday.after(endday))...{
              Date cal=startday;
              startday=endday;
              endday=cal;
          }
          //分别得到两个时间的毫秒数
          long sl=startday.getTime();
          long el=endday.getTime();
       
          long ei=el-sl;   
          //根据毫秒数计算间隔天数
          return (int)(ei/(1000*60*60*24));
      }同理,可以用相同的方法计算出任意两个时间相隔的小时数,分钟数,秒钟数等
      注:以上方法是完全按时间计算,有时并不能令人满意,如:
         startday="2006-10-11 20:00:00"
         endday="2006-10-12 8:00:00"
      计算结果为0,但是我们也许相让计算结果变为1,此时可以用如下方法实现:
      在传参之前,先设定endday的时间,如:
          endday.set(Calendar.HOUR_OF_DAY, 23);
          endday.set(Calendar.MINUTE, 59);
          endday.set(Calendar.SECOND, 59);
          endday.set(Calendar.MILLISECOND, 59);
         这样再传进去startday,endday,则结果就如我们所愿了。不过,如果嫌以上方法麻烦,可以参考以下方法:
(3)改进精确计算相隔天数的方法
      public int getDaysBetween (Calendar d1, Calendar d2) ...{
          if (d1.after(d2)) ...{    // swap dates so that d1 is start and d2 is end
              java.util.Calendar swap = d1;
              d1 = d2;
              d2 = swap;
          }
          int days = d2.get(Calendar.DAY_OF_YEAR) - d1.get(Calendar.DAY_OF_YEAR);
          int y2 = d2.get(Calendar.YEAR);
          if (d1.get(Calendar.YEAR) != y2) ...{
              d1 = (Calendar) d1.clone();
              do ...{
                  days += d1.getActualMaximum(Calendar.DAY_OF_YEAR);//得到当年的实际天数
                  d1.add(Calendar.YEAR, 1);
              } while (d1.get(Calendar.YEAR) != y2);
          }
          return days;
      }


获取系统当前时间:
public static String getSystemTime(){
          Date date=new Date();
          SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
          return df.format(date);
}//字符串转化成时间类型(字符串可以是任意类型,只要和SimpleDateFormat中的格式一致即可)

java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("M/dd/yyyy hh:mm:ss a",java.util.Locale.US);

java.util.Date d = sdf.parse("5/13/2003 10:31:37 AM");


SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String mDateTime1=formatter.format(d);


     //当前时间

     Calendar cal = Calendar.getInstance();

// SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

     SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss G E D F w W a E F");

     String mDateTime=formatter.format(cal.getTime());


     //1年前日期

     java.util.Date myDate=new java.util.Date();

     long myTime=(myDate.getTime()/1000)-60*60*24*365;

     myDate.setTime(myTime*1000);

     String mDate=formatter.format(myDate);

 

     //明天日期

     myDate=new java.util.Date();

     myTime=(myDate.getTime()/1000)+60*60*24;

     myDate.setTime(myTime*1000);

     mDate=formatter.format(myDate);


//两个时间之间的天数

     SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");

     java.util.Date date= myFormatter.parse("2003-05-1");

     java.util.Date mydate= myFormatter.parse("1899-12-30");

     long day=(date.getTime()-mydate.getTime())/(24*60*60*1000);



//加半小时

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

java.util.Date date1 = format.parse("2002-02-28 23:16:00");

long Time=(date1.getTime()/1000)+60*30;

date1.setTime(Time*1000);

String mydate1=formatter.format(date1);




//年月周求日期

SimpleDateFormat formatter2 = new SimpleDateFormat("yyyy-MM F E");

java.util.Date date2= formatter2.parse("2003-05 5 星期五");

SimpleDateFormat formatter3 = new SimpleDateFormat("yyyy-MM-dd");

String mydate2=formatter3.format(date2);


//求是星期几

mydate= myFormatter.parse("2001-1-1");

SimpleDateFormat formatter4 = new SimpleDateFormat("E");

String mydate3=formatter4.format(mydate);
分享到:
评论

相关推荐

    java 日期操作汇总

    java 日期操作汇总包含date calendar 相互转换

    JAVA日期操作汇总

    ### JAVA日期操作汇总 本文将对Java中的日期操作进行详细解析,主要涵盖以下几个方面: 1. 计算某个月份的最大天数; 2. `Calendar`与`Date`之间的转换; 3. 日期格式化; 4. 获取指定日期所在的周序号及设置某...

    java常见的字符串操作和日期操作汇总

    在Java编程语言中,字符串和日期操作是两个非常基础且重要的概念。字符串处理涉及文本的创建、连接、截取、查找、替换以及各种其他操作,而日期操作则涉及到时间的获取、格式化和修改。接下来,我们将深入探讨这两个...

    js获取当前日期时间及其它日期操作汇总

    JavaScript(简称JS)是运行在浏览器端的脚本语言,它能实现网页的动态交互效果,包括日期时间的获取和操作。下面将详细讲解如何使用JavaScript获取当前日期和时间,以及其它常见的日期时间操作。 首先,创建一个新...

    java里日期的用法汇总

    除了以上提到的基本操作外,还有一些其他的日期操作也是经常用到的。 1. **更改日期中的特定部分**: - 如果只需要更改日期中的某一部分(例如月份),可以先将日期转换为`Calendar`对象,然后更改相应字段。 - ...

    csdn上设计年月的日期控件汇总

    这篇“csdn上设计年月的日期控件汇总”资源集合提供了一系列的设计方案,旨在帮助开发者们找到适合他们项目需求的日期选择组件。 1. **日期控件的基本功能**: 日期控件通常包含两个部分:年份选择器和月份选择器...

    ORACLE中日期和时间函数汇总

    ORACLE 中日期和时间函数汇总 Oracle 中的日期和时间函数是数据库管理系统中非常重要的一部分,掌握这些函数可以帮助开发者和 DBA 更好地处理日期和时间相关的操作。 日期和字符转换函数 Oracle 中提供了两个...

    Linux 操作系统 汇总

    7. **系统信息**:`uname`显示系统信息,`date`显示或设置日期和时间,`free`查看内存使用情况。 "Linux电子书合集.ABS_Guide_cn"可能包含了更深入的教程和指南,比如: - **shell脚本编程**:如何编写自定义的...

    数据库中日期时间用法

    本文将深入探讨Oracle数据库中日期时间的用法,通过一系列实用的函数,帮助读者掌握如何在SQL查询中高效地操作日期时间数据。 ### 一、Sysdate:获取当前日期和时间 `Sysdate`是Oracle中最常用的内置函数之一,...

    SAP分类汇总功能介绍

    * 汇总:用户可以在汇总界面中选择要汇总的维度和汇总方式,例如按照日期、地区等维度对数据进行汇总。 * 按照单维度小计:用户可以在按照单维度小计界面中选择要小计的维度和小计方式,例如按照日期对数据进行小计...

    日期下拉函数及案例

    当用户在下拉菜单中选择一个日期时,事件处理器会触发,从而更新其他相关元素或执行特定的操作,如验证输入或提交数据。 在实际应用中,可能还需要考虑日期格式化问题,确保日期以用户友好的格式显示。此外,考虑到...

    js获取当前日期时间及其它操作汇总

    这篇内容汇总了JavaScript获取当前日期时间以及一些常用的日期操作方法,对于开发者来说非常实用。以下是一些关键知识点的详细说明: 1. **创建Date对象**: - `new Date()`:创建一个表示当前日期和时间的新`Date...

    根据输入的日期获取所属季度

    1. **其他日期操作**: - 计算两个日期之间的天数差。 - 获取某个日期前后的日期。 - 计算某个月份有多少天。 2. **国际化与本地化**: - 不同国家和地区有不同的日期格式标准。 - 如何设置`SimpleDateFormat`以...

    按日期或时间项组合的Excel数据透视表.rar

    标签 "Excel应用" 暗示这个压缩包中的7按日期或时间项组合.xls文件将演示如何实际操作这些功能。你可能会学到如何设置数据透视表,选择日期字段,调整日期的分组级别,以及如何自定义报告以满足特定的分析需求。这...

    C# DataCode 几年几周 转换日期 周一

    总的来说,理解和处理“几年几周”到具体日期的转换,是C#开发中的一个实用技能,涉及到日期操作、日历规则和自定义逻辑。这个知识点在日常的编程工作中非常常见,尤其是在需要对时间数据进行分析和报告时。

    mysql操作汇总.pdf

    MySQL是目前广泛使用的开源关系型数据库管理系统(RDBMS),它使用结构化查询语言(SQL)进行数据库管理,本文旨在总结MySQL操作相关的知识点,内容涵盖了MySQL数据类型、数据库和数据表操作、查询语言、约束、事务、...

    Mysql笔记和常用操作汇总

    这篇笔记和操作汇总将深入探讨MySQL的基本概念、安装与配置、数据类型、表的创建与管理、查询操作、事务处理、索引、视图、存储过程以及备份与恢复等关键知识点。 一、基本概念 1. 数据库:存储数据的容器,由一...

    二级office操作题汇总.docx

    office办公软件操作题汇总,包括word、excel、ppt三个部分。word部分要求制作宣传海报,具体要求包括调整文档版面、设置海报背景、调整海报内容、设置字号、字体和颜色等。excel部分要求对学生成绩单进行整理和分析...

Global site tag (gtag.js) - Google Analytics