定义一个日期类 Date,该类对象存放一个日期,可以提供的操作有: void GetDate( )?

定义一个日期类 Date,该类对象存放一个日期,可以提供的操作有: void GetDate( )?,第1张

我给你加了不少合法性检查,使用默认构造函数构造时返回当前日期,你可以再main函数中多测试一下有没有问题,比如闰年二月月末增加一天,12月31号增加一天这些,我就只按照想法来写,没有完全测试过。代码:

Datejava:

import javautilArrays;

import javautilCalendar;

import javautilList;

public class Date {

private int y;

private int m;

private int d;

//定义小月smallM 后续经过判断控制,不在小月中的月份都是大月

private static List<Integer> smallM = ArraysasList(4, 6, 9, 11);

public Date() {//默认构造函数,返回当前日期

Calendar calendar = CalendargetInstance();

thisy = calendarget(CalendarYEAR);

thism = calendarget(CalendarMONTH);

thisd = calendarget(CalendarDAY_OF_MONTH);

}

public Date(int y, int m, int d) throws Exception {

SetDate(y, m, d);

}

public Date(Date date) {

thisy = datey;

thism = datem;

thisd = dated;

}

void GetDate() {//取日期值,格式如“2012 年 2 月 5 日”

Systemoutprintln(thisy + " 年 " + thism + " 月 " + thisd + " 日");

}

int GetYear() {//取年份

return thisy;

}

int GetMonth() {//取月份

return thism;

}

int GetDay() {//取日期

return thisd;

}

void SetDate(int y, int m, int d) throws Exception {//设置日期值

if (y < 0 || m < 0 || d < 0) {

throw new Exception("年、月、日均不能出现负数");

}

if (m > 12) {

throw new Exception("月份不能大于12月");

}

if (m == 2) {//二月特殊处理

if (y % 4 != 0 && d > 28) {

throw new Exception("平年二月不能大于28天");

} else if (y % 4 == 0 && d > 29) {

throw new Exception("闰年二月不能大于29天");

}

} else if (smallMcontains(m)) {//小月

if (d > 30) {

throw new Exception("小月天数不能大于30天");

}

} else {//剩余的都是大月

if (d > 31) {

throw new Exception("大月天数不能大于31天");

}

}

//所有不合法检查判断后,就可以赋值了

thisy = y;

thism = m;

thisd = d;

}

void AddOneDay() {//日期增加一天

if (thism == 2) {//还是先对2月进行特殊处理

if (thisy % 4 == 0) {//闰年

if (thisd == 29) {//闰年的2月29号增加一天为3月1号

thism = 3;

thisd = 1;

return;

}

} else {

if (thisd == 28) {//平年的2月28号增加一天为3月1号

thism = 3;

thisd = 1;

return;

}

}

} else if (smallMcontains(thism)) {//小月的30号增加一天为下月1号

if (thisd == 30) {

thism += 1;

thisd = 1;

return;

}

} else {//其他的都是大月

if (thism == 12) {//12月份特殊处理

if (thisd == 31) {//12月31号增加一天为下一年的1月1号

thisy += 1;

thism = 1;

thisd = 1;

return;

}

} else {

if (thisd == 31) {//大月的31号增加一天为下月1号

thism += 1;

thisd = 1;

return;

}

}

}

//剩下的请款不是月末,号数直接加1即可

thisd += 1;

}

}

测试类:

public class T {

public static void main(String[] args) throws Exception {

Date d1 = new Date(2001, 5, 8);//用所给日期定义一个日期变量

Date d2 = new Date();//定义一个日期对象

Date d3 = new Date(d1);//用已有的日期构造一个新对象

d1GetDate();

d2GetDate();

d3GetDate();

Systemoutprintln("\n增加一天:");

d1AddOneDay();

d2AddOneDay();

d3AddOneDay();

d1GetDate();

d2GetDate();

d3GetDate();

}

}

运行结果:

PEXPIREAT KEY_NAME TIME_IN_MILLISECONDS_IN_UNIX_TIMESTAMP

设置成功返回 1 。 当 key 不存在或者不能为 key 设置过期时间时(比如在低于 213 版本的 Redis 中你尝试更新 key 的过期时间)返回 0 。

例子:

pexpireat redisKey ovar_time

redisKey :是redis 的key值 over_time 是当天的24点

var over_time = (TimergetDayHour(Timernow(), 0, 0, 0) Timer_M_SEC) + TimerOneDay;

Timer_M_SEC = 1000 这里设置的 ms数

TimerOneDay = 2460601000; //86400000

Timernow():当前时间 可以根据不同的语言更换对应的取值方式

/

@Brief: 获取指定时间( 秒数)当天某时候的秒数

@param {Number} timeStampe 时间毫秒数

@param {Number} hour 小时

@param {Number} min 分钟

@param {Number} sec 秒

/

TimergetDayHour = function (timeStampe, hour, min, sec) {

var nowDate = new Date(timeStampe);

nowDatesetHours(hour);

nowDatesetMinutes(min);

nowDatesetSeconds(sec);

return Mathfloor(nowDategetTime() / _M_SEC);

};

#include<stdioh>

#include<iostreamh>

#include "windowsh"

class Date{

private:

int year;

int month;

int day;

int IsCurrentDate(int Year,int Month,int Day);//是不是正确的日期。

public:

Date();

Date(int y,int m,int d);

Date(const Date &other);

void GetDate();

int GetYear();

int GetMonth();

int GetDay();

void SetDate(int y,int m,int d);

void AddOneDay();

};

Date::Date(){//不赋值时,默认当前日期

SYSTEMTIME ct;

    GetLocalTime(&ct);//如果用GetSystemTime(&ct);那么获取的是格林尼治标准时间

    year=ctwYear;

    month=ctwMonth;

    day=ctwDay;

}

Date::Date(int y,int m,int d):year(y),month(m),day(d){

IsCurrentDate(y,m,d);

}

Date::Date(const Date &other){

year=otheryear;

month=othermonth;

day=otherday;

}

void Date::GetDate(){

cout<<year<<"年"<<month<<"月"<<day<<"日"<<endl;

}

int Date::GetYear(){

return year;

}

int Date::GetMonth(){

return month;

}

int Date::GetDay(){

return day;

}

void Date::SetDate(int y,int m,int d){

year=y;

month=m;

day=d;

}

void Date::AddOneDay(){

int sign=0;

if ((year%4==0&&year%100!=0)||year%400==0)

{

sign =1;

}

switch (month)

{

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

             if(day<31){

day=day+1;

}else{

day=1;

month=month+1;

}

break;

case 4:

case 6:

case 9:

case 11:

if(day<30){

day=day+1;

}else{

day=1;

month=month+1;

}

break;

case 2:

if (sign ==1)

if(day<29){

day=day+1;

}else{

day=1;

month=3;

}

else

if(day<28){

day=day+1;

}else{

day=1;

month=3;

}

break;

case 12:

if(day<30){

day=day+1;

}else{

day=1;

month=1;

year=year+1;

}

break;

default:

break;

}

}

int Date::IsCurrentDate(int year,int month,int day){

int sign=0,dayvalid;

if ((year%4==0&&year%100!=0)||year%400==0)

{

sign =1;

}

if (month>=1&&month<=12)

{

switch (month)

{

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:

dayvalid = 31;

break;

case 4:

case 6:

case 9:

case 11:

dayvalid = 30;

break;

case 2:

if (sign ==1)

dayvalid = 29;

else

dayvalid = 28;

break;

default:

break;

}

if (!(day >0&&day <=dayvalid))

{

cout<<"日期格式错误"<<endl;

return 2;

}

}

else

{

cout<<"月份格式错误"<<endl;

return 1;

}

cout<<"日期格式正确"<<endl;

return 0;

}

int main(){

Date d;

dAddOneDay();

dGetDate();

Date dt(2014,2,28);

dtAddOneDay();

dtGetDate();

return 0;

}

欢迎分享,转载请注明来源:品搜搜测评网

原文地址:https://pinsoso.cn/shuma/781364.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-08-07
下一篇2023-08-07

随机推荐

  • 精华水精华液精华霜使用顺序?

    精华水、精华液和精华霜的使用顺序应该是:先使用精华水,然后使用精华液,最后使用精华霜。具体步骤如下:1 首先,使用化妆水为皮肤快速补充水分,同时调节肌肤表面的酸碱平衡和水油平衡。2 然后,使用精华液。精华液是护肤品中的核心部分,因为它含有高

    2024-04-15
    43200
  • 四款美白身体乳分享,温和不刺激,让你瞬间白一个度!

    今天给大家分享四款美白身体乳,让大家在夏天来临之前,都变得白白嫩嫩的,爱美的小仙女必备哦!妮维雅美白身体乳德国经典护肤品牌,偶然间撸了这一瓶美白身体乳,涂了大半个月,突然发现自己的手臂变的好白,首先要说下我是一个体毛比较旺盛的女生,小时候不

    2024-04-15
    29800
  • 妮维雅630为什么放那么多香精

    妮维雅630因为化妆品一般成分是化学物质不加香精不好闻。根据查询详细资料显示,妮维雅630淡斑焕白精华液揉开淡淡的香味,有人觉得味道不够高级,但是效果是很好的,油皮擦毫无压力,还有高渗透小分子玻尿酸帮助630更快的深入肌底,放大抑黑效果,想

    2024-04-15
    32900
  • 精华水和精华乳先用哪个

    先使用精华水再使用乳液。精华水和乳液都具有为皮肤保湿补水的功能,但是使用的顺序有所不同。在使用精华液后涂抹乳液,可以帮助肌肤更好的吸收营养成分,之后的护肤保养步骤也会更加顺畅。精华水当中含有保湿剂以及其他营养物质,它的质地比乳液更加的轻薄,

    2024-04-15
    34200
  • 润唇膏哪个牌子好

    润唇膏哪个牌子好要说什么护肤品走哪带哪,一定非润唇膏莫属了,随身必定携带一支,公司和家里也分别都留有存货。那么你们知道润唇膏哪个牌子好吗?有关唇膏的使用,个人有时一天涂十几次,最通常的情况是早上唇膏打底,晚上唇膏滋养,一年四季不间断,秋冬使

    2024-04-15
    28700
  • 你觉得妮维雅这个牌子怎么样?

    妮维雅是德国的品牌,众所周知,德国的品牌一直以高品质著称。妮维雅的产品是好产品,其品牌的广告较少,更加注重产品的品质。一、品牌介绍妮维雅产品在身体保养,脸部保养,防晒,唇部保养,个人清洁,男士护肤等品类已稳居欧洲市场排名第一。二、品牌价值高

    2024-04-15
    35000
  • 碧欧泉蓝钻精华水和紧肤水哪个好

    都好。1、碧欧泉蓝钻精华爽肤水,收敛毛孔,紧致轮廓,让肌肤畅饮深澈补水,舒缓紧绷,平滑修护。2、碧欧泉蓝钻紧肤水主如果收缩毛孔,它含有酒精,会有燥热干爽的觉得能够避免青春痘的滋生,有用抑制细菌的生殖。碧欧泉精华露和精华液的质感不同。精华液的

    2024-04-15
    28400

发表评论

登录后才能评论
保存