基础知识:
公元1年1月1日是星期一
一年有365天/366天(闰年)
闰年规则:原则上4年1闰,但逢百时400才闰
算法推理:
365/7=52余1
也就是说公元2年1月1日是星期二.....
当然闰年会多过1天
算法总结:A年B月C日
1、每过去1年多1天,闰年再多1天,到上一年为止多了几天能算了吧。
int count=(A-1)+(A-1)/4+(A-1)/400-(A-1)/100;
2、从1月到上月今年过去的总天数,列个全年的数组能行吧(没考虑今年的闰月)
int[] M={31,28,31,30,31,30,31,31,30,31,30,31};
for(int i=1;i<B;i++){
count+=M[i];
}
3、如果今年是闰年且B>2
count++
4、到本月今天总天数
count+=C;
5、由于公元1年1月1日是星期一,再扣一天除7取余
(count-1)%7
0为星期天,以此类推
根据日期获得星期几
import java.util.Calendar;
import java.util.Date;
public class CountWeek {
public static String getWeekOfDate(Date dt){
String[] weekDays={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
Calendar cal=Calendar.getInstance();
cal.setTime(dt);
int w=cal.get(Calendar.DAY_OF_WEEK)-1;
if(w<0)w=0;
return weekDays[w];
}
public static void main(String[] args) {
System.out.println("今天是:"+CountWeek.getWeekOfDate(new Date()));
}
}
public class ManageWeek {
//判断两个日期是否在同一周
boolean isSameWeekDates(Date date1, Date date2) {
Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();
cal1.setTime(date1);
cal2.setTime(date2);
int subYear = cal1.get(Calendar.YEAR) - cal2.get(Calendar.YEAR);
if (0 == subYear) {
if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))
return true;
}
else if (1 == subYear && 11 == cal2.get(Calendar.MONTH)) {
// 如果12月的最后一周横跨来年第一周的话则最后一周即算做来年的第一周
if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))
return true;
}
else if (-1 == subYear && 11 == cal1.get(Calendar.MONTH)) {
if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))
return true;
}
return false;
}
//产生周序列
public static String getSeqWeek(){
Calendar c = Calendar.getInstance(Locale.CHINA);
String week = Integer.toString(c.get(Calendar.WEEK_OF_YEAR));
if(week.length()==1)week = "0" + week;
String year = Integer.toString(c.get(Calendar.YEAR));
return year+week;
}
//获得周一的日期
public static String getMonday(Date date){
Calendar c = Calendar.getInstance();
c.setTime(date);
c.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);
return new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
}
//获得周五的日期
public static String getFriday(Date date){
Calendar c = Calendar.getInstance();
c.setTime(date);
c.set(Calendar.DAY_OF_WEEK,Calendar.FRIDAY);
return new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
}
//当前日期前几天或者后几天的日期
public static String afterNDay(int n){
Calendar c=Calendar.getInstance();
DateFormat df=new SimpleDateFormat("yyyy-MM-dd");
c.setTime(new Date());
c.add(Calendar.DATE,n);
Date d2=c.getTime();
String s=df.format(d2);
return s;
}
public static void main(String[] args){
}
}
分享到:
相关推荐
在Java编程语言中,日期处理是一项常见的任务,用于管理和操作日期和时间。为了方便开发者,Java提供了多种工具类来处理日期。"日期处理工具类"通常是指一个自定义的类,它封装了一些常用的方法,例如日期格式化、...
在C语言中,日期处理是一项基础但重要的任务,它涉及到时间戳、日期格式化、日期比较和日期计算等。C语言本身并没有内置的日期库,但通过标准库中的`<time.h>`头文件,我们可以利用系统时间来实现日期的相关操作。...
在C++编程中,日期处理是一项常见的任务,尤其是在开发涉及日历、时间追踪或数据分析的应用程序时。C++标准库并没有内置一个强大的日期处理类,但可以通过自定义类或者使用第三方库来实现这一功能。本篇文章将深入...
本文将深入探讨C#中的日期处理函数,特别是`DateTime`类的使用方法。 1. `DateTime` 类型是C#中用于表示日期和时间的内置类型。通过以下方式可以创建一个表示当前时间的`DateTime`对象: ```csharp System....
Date4j是一个轻量级的日期处理类库,它的出现为Java开发者提供了一种更为简单易用的方式来处理日期和时间。这个库的目标是简化日期计算,避免使用Java标准库中的`java.util.Date`和`java.util.Calendar`这些复杂的...
以下是一些关键的Oracle日期处理函数和SQL语句的详细说明: 1. **TO_DATE函数**:用于将字符串转换为日期。例如,`TO_DATE('2022-04-05', 'YYYY-MM-DD')`将字符串'2022-04-05'转换为日期。日期格式必须与提供的模式...
在C++编程中,日期处理是一项常见的任务,特别是在开发涉及时间序列分析、日志记录或者时间敏感的应用程序时。为了方便地操作日期,我们可以自定义一个日期处理类,如标题所示的"日期处理类"。这个类通常会包含一...
java中关于日期处理的总结,包含各种日期格式之间的转java.util.Date(已经不提倡使用,该类的方法比较少) java.util.Calendar(抽象类) java.util.GregorianCalendar(是Calendar的子类,日期处理时候经常使用该类)****...
Oracle数据库在日期处理方面提供了丰富的函数和操作方式,使得对日期和时间的管理变得非常灵活。以下是对标题和描述中提到的知识点的详细说明: 1. **日期和字符转换**: - `to_date` 函数用于将字符型数据转换为...
Oracle数据库在日期处理方面提供了丰富的函数,使得对日期和时间的操作变得非常灵活。以下是对给定文件中提及的Oracle日期处理函数的详细说明: 1. **add_months(d, n)**: 此函数将日期d加上n个月,返回新的日期。...
在Java编程中,日期处理是一项常见的任务,涉及到各种日期和时间的操作。以下是一些关于Java日期处理的关键知识点,这些知识点在给定的文件中有所提及: 1. **获取当前日期**: Java通过`java.util.Date`类可以...
本文将详细介绍SQL中日期处理的常用方法,包括获取当前系统时间、日期加减运算、计算日期差、提取日期部分、转换日期格式等功能。 ### 一、获取当前系统时间 在SQL Server中,`GETDATE()`函数用于返回当前的系统...
在SQL Server中,日期处理是数据管理的核心部分,涉及到各种日期和时间的计算、比较以及格式化。本章主要探讨SQL Server中两种主要的日期类型:datetime和smalldatetime。 1. **日期类型概述** - **datetime**: ...
基本涵盖了各种场景的日期处理需要,包括时间类型转换,获取N天前后,月初月末,某段时间按天拆分等功能,欢迎使用。
根据给定的文件标题、描述、标签以及部分内容,我们可以总结出以下有关 Java 日期处理的知识点: ### 1. 导入必要的包 在 Java 中处理日期时,我们需要导入一些必要的包来支持日期时间的格式化、解析等功能。示例...
在Oracle数据库中,日期处理是一项基础且重要的任务,它涉及到数据的存储、查询以及分析。Oracle提供了丰富的函数和操作符来处理日期,使得我们可以轻松地完成诸如计算星期几、两个日期之间的天数等常见需求。以下是...
`DateUtil`类通常被设计为一个工具类,用于提供方便、高效和灵活的日期处理功能。这个类集成了多种方法,帮助开发者进行日期格式化、获取当前时间等操作。下面我们将深入探讨`DateUtil`类可能包含的一些核心知识点。...