定义一个日期类 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

随机推荐

  • 男士基础护肤套装不知道怎么选?看这里

    男士基础护肤套装不知道怎么选?AHC男士水乳三件套AHC是韩国的一个品牌,它家的面膜一直都很热销,这个套盒性价比挺高的,外观设计很高级,专门针对男性设计的,不挑肤质及年龄,使用后清爽不黏腻可平衡水油,成分中不含酒精,敏感肌也可以用,有淡淡的

    2024-04-15
    1030800
  • “山寨”是什么意思?

    [编辑本段]山寨古义山寨拼音:shān zhài山寨亦作“ 山砦 ”。 1筑有栅栏等防守工事的山庄。 宋 李心传 《建炎以来朝野杂记·龙州蕃部寇边》:“王钺又请於其前筑水礶山寨,以为戍守之所,朝廷皆从之。”《宋史·岳飞传》:“飞

    2024-04-15
    48400
  • 美白精华液哪个牌子好

    1、sk2小银瓶2sk面部淡斑精华露富含光蕴海藻精粹能够使肌肤变得匀净透白,能够淡化肌肤可见的斑点,使肌肤变得亮泽净白光采。是护肤品祛斑排行榜10强之一,这款产品是一款明星护肤产品,价格有点小贵但是效果还是不错的。2、资生堂新透白美肌集光祛

    2024-04-15
    44300
  • 哪一种精华的性价比更高啊?

    雅诗兰黛小棕瓶——精华界的常青树啊!说到精华怎能没有大名鼎鼎的小棕瓶。这款精华与其说是入门抗老精华不如说是一款维稳精华。看似无功无过,其实它一直在帮助你的肌肤保持一个稳定的状态。里面添加了一些可人的保湿、抗氧化成分:角鲨烷、咖啡因、酵母提取

    2024-04-15
    45300
  • 精华露的正确使用步骤精华露的正确使用步骤是怎样的

    1、首先用洁面乳将肌肤清洁干净,让脸部肌肤保持干净。2、涂抹爽肤水,可以将护肤品滴在化妆棉上,然后再涂抹在脸上,还能起到二次清洁的作用,保证肌肤喝足水。3、使用精华露,在调理肌肤后,取按压喷头两下的精华露放在掌心处,然后双手合十,把精华露预

    2024-04-15
    36200
  • 最近对苏秘家比较感兴趣,它的护肤品哪些不错用啊?

    说到苏秘,不得不说它的自然发酵护肤品,是没有人工色素、香料之类的添加物滴,成分安全,孕妇和敏感肌也能用。还有奇迹精华露,相当于SK2的神仙水哦,我用了几年了,感觉比神仙水要温和保湿一些。它的升级版是鎏金瓶系列的奇迹精华,也叫女神水,看到欢乐

    2024-04-15
    35800
  • 神仙水和清莹露区别

    SK-II的神仙水从一推出就深受全球护肤爱好者的青睐,因此很多的美妆博主都极力的推荐SK-II的神仙水。因此在国内大众消费者的印象中,都觉得SK-II的神仙水是一款非常不错的产品。SK-II的神仙水是一款精华液,与SKII清莹露相比较来说,

    2024-04-15
    27900

发表评论

登录后才能评论
保存