计算某一月份的最大天数
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 日期操作汇总包含date calendar 相互转换
### JAVA日期操作汇总 本文将对Java中的日期操作进行详细解析,主要涵盖以下几个方面: 1. 计算某个月份的最大天数; 2. `Calendar`与`Date`之间的转换; 3. 日期格式化; 4. 获取指定日期所在的周序号及设置某...
在Java编程语言中,字符串和日期操作是两个非常基础且重要的概念。字符串处理涉及文本的创建、连接、截取、查找、替换以及各种其他操作,而日期操作则涉及到时间的获取、格式化和修改。接下来,我们将深入探讨这两个...
JavaScript(简称JS)是运行在浏览器端的脚本语言,它能实现网页的动态交互效果,包括日期时间的获取和操作。下面将详细讲解如何使用JavaScript获取当前日期和时间,以及其它常见的日期时间操作。 首先,创建一个新...
除了以上提到的基本操作外,还有一些其他的日期操作也是经常用到的。 1. **更改日期中的特定部分**: - 如果只需要更改日期中的某一部分(例如月份),可以先将日期转换为`Calendar`对象,然后更改相应字段。 - ...
这篇“csdn上设计年月的日期控件汇总”资源集合提供了一系列的设计方案,旨在帮助开发者们找到适合他们项目需求的日期选择组件。 1. **日期控件的基本功能**: 日期控件通常包含两个部分:年份选择器和月份选择器...
ORACLE 中日期和时间函数汇总 Oracle 中的日期和时间函数是数据库管理系统中非常重要的一部分,掌握这些函数可以帮助开发者和 DBA 更好地处理日期和时间相关的操作。 日期和字符转换函数 Oracle 中提供了两个...
7. **系统信息**:`uname`显示系统信息,`date`显示或设置日期和时间,`free`查看内存使用情况。 "Linux电子书合集.ABS_Guide_cn"可能包含了更深入的教程和指南,比如: - **shell脚本编程**:如何编写自定义的...
本文将深入探讨Oracle数据库中日期时间的用法,通过一系列实用的函数,帮助读者掌握如何在SQL查询中高效地操作日期时间数据。 ### 一、Sysdate:获取当前日期和时间 `Sysdate`是Oracle中最常用的内置函数之一,...
* 汇总:用户可以在汇总界面中选择要汇总的维度和汇总方式,例如按照日期、地区等维度对数据进行汇总。 * 按照单维度小计:用户可以在按照单维度小计界面中选择要小计的维度和小计方式,例如按照日期对数据进行小计...
当用户在下拉菜单中选择一个日期时,事件处理器会触发,从而更新其他相关元素或执行特定的操作,如验证输入或提交数据。 在实际应用中,可能还需要考虑日期格式化问题,确保日期以用户友好的格式显示。此外,考虑到...
这篇内容汇总了JavaScript获取当前日期时间以及一些常用的日期操作方法,对于开发者来说非常实用。以下是一些关键知识点的详细说明: 1. **创建Date对象**: - `new Date()`:创建一个表示当前日期和时间的新`Date...
1. **其他日期操作**: - 计算两个日期之间的天数差。 - 获取某个日期前后的日期。 - 计算某个月份有多少天。 2. **国际化与本地化**: - 不同国家和地区有不同的日期格式标准。 - 如何设置`SimpleDateFormat`以...
标签 "Excel应用" 暗示这个压缩包中的7按日期或时间项组合.xls文件将演示如何实际操作这些功能。你可能会学到如何设置数据透视表,选择日期字段,调整日期的分组级别,以及如何自定义报告以满足特定的分析需求。这...
总的来说,理解和处理“几年几周”到具体日期的转换,是C#开发中的一个实用技能,涉及到日期操作、日历规则和自定义逻辑。这个知识点在日常的编程工作中非常常见,尤其是在需要对时间数据进行分析和报告时。
MySQL是目前广泛使用的开源关系型数据库管理系统(RDBMS),它使用结构化查询语言(SQL)进行数据库管理,本文旨在总结MySQL操作相关的知识点,内容涵盖了MySQL数据类型、数据库和数据表操作、查询语言、约束、事务、...
这篇笔记和操作汇总将深入探讨MySQL的基本概念、安装与配置、数据类型、表的创建与管理、查询操作、事务处理、索引、视图、存储过程以及备份与恢复等关键知识点。 一、基本概念 1. 数据库:存储数据的容器,由一...
office办公软件操作题汇总,包括word、excel、ppt三个部分。word部分要求制作宣传海报,具体要求包括调整文档版面、设置海报背景、调整海报内容、设置字号、字体和颜色等。excel部分要求对学生成绩单进行整理和分析...