c++菜鸟求助 日期与时间显示,实现以下功能

作者&投稿:潮亲 (若有异议请与网页底部的电邮联系)
怎么用C++定义一个datetime类,使其对象可以显示当前系统时间和日期 ?谢谢~

#include
#include
class datetime
{
public:
int year;
int month;
int day;
int hour;
int min;
int sec;
datetime()
{
struct tm* ptm;
time_t ltime;
time(<ime);
ptm = localtime(<ime);
year = ptm->tm_year+1900;
month = ptm->tm_mon+1;
day = ptm->tm_mday;
hour = ptm->tm_hour;
min = ptm->tm_min;
sec = ptm->tm_sec;
}
void output()
{
printf("%.4d/%.2d/%.2d %.2d:%.2d:%.2d
",year,month,day,hour,min,sec);
}
};
void main(void)
{
datetime d;
d.output();
}

#include
using namespace std;
class Time
{
public:
Time(int h,int m,int s):hour(h),minute(m),sec(s){}
void display(){cout<<hour<<":"<<minute<<":"<<sec<<endl;}
protected:
int hour;
int minute;
int sec;
};
class Date
{
public:
Date(int y,int mo,int d):year(y),month(mo),day(d){}
void show(){cout<<year<<"年"<<month<<"月"<<day<<"日"<<endl;}
protected:
int year;
int month;
int day;
};
class Timedate:public Date,public Time
{
public:
Timedate(int y,int mo,int d,int h,int m,int s):Date(y,mo,d),Time(h,m,s){}
void displayall(){show();display();}
};
int main()
{
Date d(2009,6,8);
d.show();
Time t(19,47,58);
t.display();
Timedate T(2009,6,8,19,37,50);
T.displayall();
return 0;
}
这个程序可以满足要求。

(1)定义个时间类CMyTime,公有成员变量时、分、秒,重载操作符operator++(int),秒自动加1,满60,分进1,分满60,时进1,时满24,则清零。

(2)CMyDate与时间类相似,但要注意判断每个月天数,进位。

(3)用CMyDateTime:CMyTime,CMyDate来派生,新类中再加公有成员变量。

用定时器,每1000ms对时间自加并显示。时区信息可以在系统中找到相应信息。

对于如何计算1个月有多少天可以指定数组,如果你的程序支持年份在1582以后,则按能被4整除以及能被400整除但不能被100整除的年份为闰年,如果之前,则去掉不能被100整除这一条件即可。计算两个日期之间的天数差,按照普通人的思维方式,那就是两个日期之间相差的整数年乘365再加上闰年数量,再加余下部分天数,比如2011年11月11日到2014年5月20日,则2年,加一个闰年,再加2011年11月11日到2012年12月31日的天数,再加上2014年1月1日到2014年5月20日的天数。但这样太复杂,而且对1582年10月及以前的日期就会出现错误,可以考虑用一参考日期,再由这一日期来算两个日期之间的差。

void CTimeConv::GetJD(SYSTEMTIME st_UT,double &nJulianDay,unsigned int &DayofWeek)
{
    double year,month,day,hour,minute,seconds,remainDay;//年、月、日,小数部分日(不足1天部分)
    year=st_UT.wYear;
    month=st_UT.wMonth;
    day=st_UT.wDay;
    hour=st_UT.wHour;
    minute=st_UT.wMinute;
    seconds=st_UT.wSecond;
    if (hour<0)
    {
        hour=0;//未赋值时对其初始化
    }
    if (minute<0)
    {
        minute=0;
    }
    if (seconds<0)
    {
        seconds=0;
    }
    remainDay=(hour+(minute+(seconds/60))/60)/24;//必须用double,不然会有截断,影响精度
    if (month<=2&&month>0)
    {
        year--;
        month+=12;
    }
    int A=int(year/100);
    int B=0;
    if (year==1582)
    {
        if (month==10)
        {
            if (day>=15)
            {
                B=2-A+INT(A/4);
            }
        }else if (month>10)
        {
            B=2-A+INT(A/4);
        }
    }else if (year>1582)
    {
        B=2-A+INT(A/4);
    }
    nJulianDay=int(365.25*(year+4716))+int(30.6001*(month+1))+(day+remainDay)+B-1524.5;
    DayofWeek=((unsigned int)(nJulianDay+1.5))%7;
}

可以换成你自己的类,这个函数除了可以算出基准天数(两天之差就只要计算两个日期,然后得到的天数相减),还可以算出星期。

详细可以参考我写的程序 http://blog.163.com/paradise300@126/blog/static/69940666201322622926503/



你是那个学校的?


合川市18616112206: 怎么用C++定义一个datetime类,使其对象可以显示当前系统时间和日期 ?谢谢 -
蒯舒健步: #include#include class datetime { public: int year; int month; int day; int hour; int min; int sec; datetime() { struct tm* ptm; time_t ltime; time(&ltime); ptm = localtime(&ltime); year = ptm->tm_year+1900; month = ptm->tm_mon+1; day = ptm->tm_mday; ...

合川市18616112206: 编写一个c++程序:两个类Time和Date,派生Time Date类,可以显示日期和时间,编写一个 -
蒯舒健步: #include<iostream> using namespace std; class Time { public: Time(int h,int m,int s):hour(h),minute(m),sec(s){} void display(){cout<<hour<<":"<<minute<<":"<<sec<<endl;} protected: int hour; int minute; int sec; }; class Date { public: Date(int y,...

合川市18616112206: c++获取系统日期和时间 -
蒯舒健步: 优点:仅使用C标准库;缺点:只能精确到秒级 #include <time.h> #include <stdio.h> int main( void ) {time_t t = time(0);char tmp[64];strftime( tmp, sizeof(tmp), "%Y/%m/%d %X %A 本年第%j天 %z",localtime(&t) );puts( tmp );return 0; } size_t ...

合川市18616112206: c++ 当前时间和日期获取 -
蒯舒健步: 用WINDOWS API很方便 需要#include "windows.h" int year,month,day; SYSTEMTIME ct; GetLocalTime(&ct);//如果用GetSystemTime(&ct);那么获取的是格林尼治标准时间 year=ct.wYear; month=ct.wMonth; day=ct.wDay;

合川市18616112206: 请问怎样用C++写一程序显示系统时间? -
蒯舒健步: #include<time.h> //C语言的头文件 #include<stdio.h> //C语言的I/Ovoid main() { time_t now; //实例化time_t结构 struct tm *timenow; //实例化tm结构指针 time(&now); //time函数读取现在的时间(国际标准时间非北京时间),然后传值给now ...

合川市18616112206: 哪位高手帮忙编个一个显示日期的c++程序
蒯舒健步: #include<iostream.h>bool isLeapYear(int y) //判断年份是否为闰{ if((y % 4 == 0 && y % 100 != 0)||(y % 400 == 0)) return true; else return false;}void main(){ int y, m, d; cout<<"输入日期:"<<endl; cin>>y>>m>>d; switch(m) { case 1: case 3: case 5: ...

合川市18616112206: 如何用c++ 获取系统当前时间和日期? -
蒯舒健步: #include<time.h >头文件 然后 time_t t; time(&t); 输出 ctime(&t) 具体为: #include <stdio.h> #include <time.h>int main(void) { time_t t;time(&t); printf("Today's date and time: %s\n", ctime(&t)); return 0; }

合川市18616112206: C++编程 设计一个Date类,具有以下功能: 1、显示目前日期:yy - mm - dd 2、分别显示年份、月份与日期; 3、显 -
蒯舒健步: 实现了前4个功能,第5个现在只能在同一年,自己去修改吧.#include <ctime>#include <iostream> using namespace std; class CDate { private: int day; int month; int year; int weekDay; int yearDay; public: CDate() { set( time( NULL ) ); } CDate(int ...

合川市18616112206: C语言中怎样调用系统时间并动态显示! -
蒯舒健步: 得到系统时间:1.使用CTime类 CTime tm=CTime::GetCurrentTime(); CString str=tm.Format(“现在时间是:%Y年%m月%d日 %X”); MessageBox(str,NULL,MB_OK); 2: 得到系统时间日期(使用GetLocalTime) SYSTEMTIME st; CString ...

合川市18616112206: 【在线等】C++ 如何中获得系统日期和时间 -
蒯舒健步: SYSTEMTIME st; GetLocalTime(&st); SYSTEMTIME是一个结构体,包含年月日时分秒毫秒,可以用格式化字符串将其格式化成字符串.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网