日期與時間(C/C++)

C++繼承了C語言用于日期和時間操作的結構和函數,使用之前程序要引用<ctime>頭文件

有四個與時間相關的類型:clock_t、time_t、size_t、和tm。類型clock_t、size_t、和time_t能夠把系統時間和日期表示為某種整數。

結構體tm把時間和日期以C結構的形式保存,tm結構的定義如下:

struct tm
{int tm_sec; //秒,正常范圍0 ~59,但是允許到61int tm_min; //分 范圍 0~59int tm_hour; //小時 0~23int tm_mday;    //一月中的第幾天int tm_mon;    //月 0~11int tm_year;    //自1900年起的年數int tm_wday;    //一周中的第幾天int tm_yday;    //一年中的第幾天int tm_isdst; //夏令時    
}

相關函數:

函數

描述

time_t time(time_t *time);

該函數返回系統的當前日歷時間。自1970年1月1日以來經過的秒數,如果系統沒有時間,返回-1

char *ctime(const time_t *time);

該函數返回一個表示當地時間的字符串指針,字符串形式day month year hours:minutes:seconds year\n\0

struct tm *localtime(const time_t *time);

該函數返回一個指向表示本地時間的tm結構的指針。

clock_t clock(void);

該函數返回程序執行起,處理器時間所使用的時間,如果時間不可用,則返回-1

char *asctime(const struct tm *time);

該函數返回一個指向字符串的指針,字符串包含了time所指向結構中存儲的信息,返回的形式為:day month year hours:minutes:seconds year\n\0

struct tm *gmtime(const time_t *time);

該函數返回一個指向time的指針,time為tm結構,用協調世界時(UTC)也被稱為格林尼治標準時間(GMT)表示

time_t mktime(struct tm *time);

該函數返回日歷時間,相當于time所指向結構中存儲的時間

double difftime(time_t time2,time_t time1);

該函數返回time1和time2之間相差的秒數

size_t strftime();

該函數可用于格式化日期和時間為指定的格式

實例:

#include<iostream>
#include<ctime>
using namespace std;int main()
{//基于當前系統日期和時間 初始化0time_t now = time(0);/把now轉換成字符串形式char *dt = ctime(&now);cout << "local date and time:  " << dt << endl;//把now轉化成tm結構tm *gmtm = gmtime(&now);dt = asctime(gmtm);cout << "UTC date and time :  " << dt << endl;return 0;
}

運行結果:

exbot@ubuntu:~/wangqinghe/C++/time$ ./time

local date and time:? Mon Aug? 5 14:54:25 2019

?

UTC date and time :? Mon Aug? 5 06:54:25 2019

?

使用結構體tm格式化時間

#include<iostream>
#include<ctime>
using namespace std;int main()
{time_t now = time(0);cout << "from 1970  then the seconds passed : " << now << endl;tm* ltm = localtime(&now);cout << "year : " << 1900 + ltm->tm_year << endl;cout << "month : " << 1 + ltm->tm_mon << endl;cout << "day : " << ltm->tm_mday << endl;cout << "hour : " << ltm->tm_hour << ":";cout << ltm->tm_min << ":";cout << ltm->tm_sec << endl;return 0;
}

運行結果:

exbot@ubuntu:~/wangqinghe/C++/time$ ./time1

from 1970? then the seconds passed : 1564988067

year : 2019

month : 8

day : 5

hour : 14:54:27

?

以20xx-xx-xx xx:xx:xx格式輸出結果:

#include<iostream>
#include<ctime>
#include<cstdlib>
#include<cstdio>using namespace std;string Get_Current_Date();int main()
{cout << Get_Current_Date().c_str() << endl;return 0;
}string Get_Current_Date()
{time_t nowtime;nowtime = time(NULL);char tmp[64];strftime(tmp,sizeof(tmp),"%Y-%m-%d %H:%M:%S",localtime(&nowtime));return tmp;
}

運行結果:

exbot@ubuntu:~/wangqinghe/C++/time$ ./time2

2019-08-05 15:00:14

轉載于:https://www.cnblogs.com/wanghao-boke/p/11305023.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/384904.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/384904.shtml
英文地址,請注明出處:http://en.pswp.cn/news/384904.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

標準輸入輸出(C++)

輸入輸出流函數&#xff08;模板&#xff09; #include<iostream> #include<iomanip> using namespace std; int main() {cout << setiosflags(ios::left|ios::showpoint); //設左對齊cout.precision(5); //設置除小數…

拷貝函數和構造函數

類的構造函數&#xff1a; 類的構造函數是類的一種特殊的成員函數&#xff0c;它會在每次創建類的新對象時執行。 構造函數的名稱與類的名稱是完全相同的&#xff0c;并且不會返回任何類型&#xff0c;也不會返回void。 構造函數可用于為某些成員變量初始值。 默認的構造函數是…

拷貝構造函數

拷貝構造函數是一種特殊的構造函數&#xff0c;它在創建對象時&#xff0c;使用的是同一類中之前創建的對象來初始化新創建的對象。拷貝構造函數通常用于&#xff1a; l 通過使用另一個同類型的對象來初始化新創建的對象&#xff1b; l 復制對象把它作為參數傳遞給函數&#…

Linux進程通信之管道

進程間完成數據傳遞需要借助操作系統提供的特殊的方法&#xff0c;比如&#xff1a;文件、管道、信號、共享內存、消息隊列、套接字、命名管道等。但現在常用的進程間通信方式有&#xff1a; 管道 – 使用最簡單 pipe 管道一般讀寫行為 FIFO&#xff08;有名管道&#xff09;&a…

Linux進程通信之文件

父子進程共享打開的文件描述符------使用文件完成進程間通信. /*** fork_share_fd.c***/ #include <stdio.h> #include <unistd.h> #include <string.h> #include <stdlib.h> #include <fcntl.h> #include <sys/wait.h>int main(void) {in…

dup2函數

將當前系統中的進程信息打印到文件中 命令行&#xff1a;ps aux > out 將ps得到的信息重定向到out文件中 使用dup2文件在程序中完成。 int dup2(int oldfd,int newfd); /*** dup2.c ***/ #include<stdio.h> #include<fcntl.h> #include<unistd.h> #includ…

wait()函數

wait()函數&#xff1a;回收僵尸進程 父進程調用wait函數可以回收子進程終止信息。該函數有三個功能&#xff1a; 1&#xff09; 阻塞等待子進程退出 2&#xff09; 回收子進程殘留資源 3&#xff09; 獲取子進程結束狀態&#xff08;退出原因&#xff09; /*** zoom_test.c **…

waitpid()函數

waitpid函數 作用同于wait&#xff0c;但可指定pid進程清理&#xff0c;可以不阻塞。 pid_t waitpid(pid_t pid,int *status,int options);成功&#xff1a;返回清理掉的子進程ID&#xff1b;失敗&#xff1a;-1&#xff08;無子進程&#xff09; 特殊參數和返回情況&#xff1…

孤兒進程、僵尸進程

孤兒進程&#xff1a;父進程先于子進程結束&#xff0c;則子進程成為孤兒進程&#xff0c;子進程的父進程成為init進程&#xff0c;稱為init進程領養孤兒進程。 /*** orphan.c ***/ #include <stdio.h> #include <unistd.h> #include <sys/wait.h>int main(v…

友元函數

類的友元函數是定義在類外部&#xff0c;但有權訪問類的所有私有成員和保護成員。盡管友元函數的原型有在類的定義中出現過&#xff0c;但友元函數并不是成員函數。 友元可以是一個函數&#xff0c;該函數被稱為友元函數&#xff1b;友元也可以是一個類&#xff0c;該類被稱為友…

this指針

在C中&#xff0c;每一個對象都能夠通過this指針來訪問自己的地址。this指針是所有成員函數的隱含參數。因此&#xff0c;在成員函數內部&#xff0c;它可以用來指向調用對象。 友元函數是沒有this指針的&#xff0c;因為友元不是類的成員&#xff0c;只有成員函數才有this指針…

靜態成員

我們可以使用static關鍵字把類成員定義為靜態的。當我們聲明類的成員為靜態時&#xff0c;這意味著無論創建多少個類的對象&#xff0c;靜態成員都只有一個副本。 靜態成員在類的所有對象都是貢獻的。如果不存在其他的初始化語句&#xff0c;在創建第一個對象時&#xff0c;所有…

Linux進程通信之mmap

mmap()函數&#xff1a; void *mmap(void* addr,size_t length,int port,int flags,int fd,off_t offset); 返回&#xff1a;成功&#xff1a;返回創建的映射區首地址&#xff1b;失敗&#xff1a;MAP_FAILED 宏 參數&#xff1a; addr: 建立映射區的首地址&#xff0c;由…

Linux之文件通信

/** 后執行,嘗試讀取另外一個進程寫入文件的內容*/ #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <fcntl.h> #include <string.h>int main(void) {char buf[1024];char *str "----------test2 write secesuss---…

重載函數和重載運算符

C允許在同一個作用域中的某個函數和運算符指定多個定義&#xff0c;分別稱為函數重載和運算符重載。 重載聲明是指一個與之前已經在該作用域內聲明過的函數或方法具有相同名稱的聲明&#xff0c;但他們的參數列表和定義&#xff08;實現&#xff09;不相同。 當調用一個重載函數…

二元運算符重載

以非成員函數方式重載運算符 /*** overtwo.cpp ***/ #include<iostream> using namespace std;class Box {public:Box(double l 2.0,double b 2.0,double h 2.0){length l;breadth b;height h;}double getVolume(){return length*breadth*height;}private:double l…

一元運算符重載

一元運算符只對一個操作數進行操作&#xff0c;下面是一元運算符實例&#xff1a; 遞增運算符&#xff08;&#xff09; 和遞減運算符&#xff08;--&#xff09;一元減運算符&#xff0c;即符號&#xff08;-&#xff09;邏輯非運算符&#xff08;!&#xff09;/*** overone.c…

關系運算符重載

C語言支持各種關系運算符重載(<,>,>,<,)&#xff0c;他們可用于比較C內置的數據類型。 支持重載任意一個關系運算符&#xff0c;重載后的關系運算符可以用于比較類的對象。 /*** overrealate.cpp ***/ #include<iostream> using namespace std;class Distanc…

kill函數

kill函數/命令產生信號 kill命令產生信號&#xff1a;kill -SIGKILL pid kill函數&#xff1a;給指定進程發送指定信號(不一定殺死) int kill(pid_t pid, int sig); 成功&#xff1a;0&#xff1b;失敗&#xff1a;-1 (ID非法&#xff0c;信號非法&#xff0c;普通用戶殺i…

下標運算符重載

重載該運算符用于增強操作C數組的功能。 /*** subscript.cpp ***/ #include<iostream> using namespace std; const int SIZE 10;class safearay {private:int arr[SIZE];public:safearay(){register int i;for(i 0; i < SIZE ;i){arr[i] i;} }int& operator…