日期问题

public class MyDate {
private int year,month,day;
private static int thisYear;
static
{ thisYear=2012;
}
public MyDate(int year,int month,int day)
{ this.set(year,month,day);
}

public MyDate()
{ this(1970,1,1);
}
public MyDate(MyDate d)
{ this.set(d);
}
public void set(int year, int month, int day)
{
this.year=year; //出s.year 指当前对象的成员变量, year 指參数
this.month=(month>=1&&month<=12) ? month:1;
this.day=(day>=1&&day<=31)?day:1; //this引用不能省略
}
public void set(MyDate d) //设置日期值, 重载
{ set(d.year,d.month,d.day); //调用同名成员方法,不能使用this0
}
public int getYear() //获得年份
{ return this.year;
}
public int getMonth()
{ return this.month; } //获得月份
public int getDay()
{ return this.day;} //获得当月日期
public String toString()
{ // return year+"年"十String.format("%02d",month)+"月"+ String.format("%02d",day)+"日";
return year+"年"+month+"月"+ day+"日";
}
public static int getThisYear() //获得今年年份,静态方法
{ return thisYear; //访间静态成员变量
}
public static boolean isLeapYear(int year) //判断指定年份是否为闰年, 静态方法
{ return year%400==0||year%100!=0 &&year%4==0;
}
public boolean isLeapYear() //判断当前日期的年份是否闰年, 重载
{ return isLeapYear(this.year); //调用静态方法
}
public boolean equlals(MyDate d) //比较当前日期值与 d是否相等(只是值相等)。
{
return this==d||d!=null&&this.year==d.year &&this.month==d.month &&this.day==d.day;
}
public static int daysOfMonth(int year, int month) //计算某月的天数
{
switch(month)
{ case 1:case 3:case 5:case 7:case 8:case 10:case 12: return 31;
case 4:case 6: case 9:case 11: return 30;
case 2: return MyDate.isLeapYear(year) ?29 : 28;
default: return 0;
}
}
public int daysOfMonth()
{ return daysOfMonth(this.year,this.month);
}
public void tomorrow() //明天
{
this.day++;
if(this.day>this.daysOfMonth())
{ this.day=1;
this.month++;
if(this.month>12)
{ this.month=1;
this.year++;
}
}
}
public MyDate yestoday()//昨天
{
MyDate date=new MyDate(this);
date.day--;
if(date.day==0)
{ date.month--;
if(date.month==0)
{ date.month=12;
date.year--;
}
date.day=daysOfMonth(date.year,date.month);
}
return date;
}

public boolean before(MyDate d)            //boolean只有两种情况,0和1
{
return (d.year>this.year)||(d.year==this.year&&d.month>this.month)||(d.year==this.year&&d.month==this.month&&d.day>this.day)
}
}

class MyDate_ex
{
public static void main(String args[])
{
System.out.println("今年是"+MyDate.getThisYear()+",闰年?"+MyDate.isLeapYear(MyDate.getThisYear()));
MyDate d1=new MyDate(2012,12,31);
MyDate d2=new MyDate(d1);
System.out.println("d1:"+d1+",d2:"+d2+",d1==d2?"+(d1==d2)+",d1.equals(d2)?"+d1.equals(d2));
System.out.print(d1+"的明天是");
d1.tomorrow();
System.out.println(d1+"\n"+d1+"的昨天是"+(d2=d1.yestoday()));
// MyDate d3=new MyDate(2014,12,31);
System.out.println(",d2>d1?"+d1.before(d2));
System.out.println(d1);
System.out.println(d2);
}
}

时间: 2024-10-09 10:46:23

日期问题的相关文章

plsql存储过程日期类型和天的互转

floor(to_number(tt.FDATE-to_date('0001-01-01 00:00:00','yyyy-mm-dd hh24:mi:ss'))) 上面这句能将型如'2017-09-20 00:00:00' 的日期转为自'0001-01-01 00:00:00'以来的天数. 其它相关的需求可以参考: http://www.cnblogs.com/hanyun/archive/2012/04/28/2475642.html

8.03 确定两个日期之间的工作日数目

问题:给定两个日期,求它们之间(包括这两个日期本身)有多少个"工作"日.select sum(case             when date_format(             date_add(jones_hd,interval t500.id - 1, 'DY'),'%a')             in ('SAT', 'SUN')              then 0 else 1           end) as days  from (select max(c

JavaSE8基础 File lastModified 获取文件夹的修改日期

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0) information: 通过这张截图可以看到 测试文件夹 的修改日期. code: package jizuiku0; import java.io.File; import java.text.SimpleDateFormat; import java.util.Date; /* * @version V17.09 */ pu

SpringMVC后台使用对象接受参数字符串转日期

在springMVC配置文件中加入: <bean id="dateConvert" class="com.iomp.util.DateConvert"/> <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"> <property

常见的日期处理方式总结

■ 目录 日期对象 日期的取得与设定 转换为字符串 转换为数值 ■ 一览 Date(), getDate(), getDay(), getFullYear(), getHours(), getMilliseconds(), getMinutes(), getMonth(), getSeconds(), getTime(), getTimezoneOffset(), getUTCDate(),getUTCDay(), getUTCFullYear(), getUTCHours(), getUTCM

python selenium 处理时间日期控件(十五)

测试过程中经常遇到时间控件,需要我们来选择日期,一般处理时间控件通过层级定位来操作或者通过调用js来实现. 1.首先我们看一下如何通过层级定位来操作时间控件. 通过示例图可以看到,日期控件是无法输入日期,点击后弹出日期列表供我们选择日期,自己找了一个日期控制演示一下,通过两次定位,选择了日期 #-*- coding:utf-8 -*- import time from selenium import webdriver driver = webdriver.Chrome() driver.get

js日期

<title>范例2-6</title> <script language="javascript"> <!-- var dateObj = new Date(); // 创建一个日期对象 dateObj.setYear( 2007 ); // 设置日期对象的年份 dateObj.setDate( 20 ); // 设置日期对象的日期 dateObj.setMonth( 4 ); // 设置日期对象的月份 // 显示日期对象中的时间 alert

Java日期时间(Date/Time)

获取当前日期和时间 在Java中容易得到当前的日期和时间.可以使用一个简单的Date对象的toString()方法,如下所示打印当前日期和时间: import java.util.Date; public class DateDemo { public static void main(String args[]) { // Instantiate a Date object Date date = new Date(); // display time and date using toStr

每天一个JS 小demo之日历制作。主要知识点:日期函数和对于函数封装的灵活运用

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <style> td { text-align: center; } </style></head> <body> <p> <select id="yearS

顺序结构显示日期与时间

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms; namespace 顺序结构时间日期{ public partial class Form1 : Form { public Form1() {