第十九章 C++ 日期 時間

C++ 日期 & 時間

C++ 標準庫沒有提供所謂的日期類型。C++ 繼承了 C 語言用于日期和時間操作的結構和函數。為了使用日期和時間相關的函數和結構,需要在 C++ 程序中引用 <ctime> 頭文件。

有四個與時間相關的類型:clock_t、time_t、size_ttm。類型 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;  // 一月中的第幾天,范圍從 1 到 31int tm_mon;   // 月,范圍從 0 到 11int tm_year;  // 自 1900 年起的年數int tm_wday;  // 一周中的第幾天,范圍從 0 到 6,從星期日算起int tm_yday;  // 一年中的第幾天,范圍從 0 到 365,從 1 月 1 日算起int tm_isdst; // 夏令時
}

下面是 C/C++ 中關于日期和時間的重要函數。所有這些函數都是 C/C++ 標準庫的組成部分,您可以在 C++ 標準庫中查看一下各個函數的細節。

序號函數 & 描述
1time_t time(time_t *time);
該函數返回系統的當前日歷時間,自 1970 年 1 月 1 日以來經過的秒數。如果系統沒有時間,則返回 .1。
2char *ctime(const time_t *time);
該返回一個表示當地時間的字符串指針,字符串形式 day month year hours:minutes:seconds year\n
3struct tm *localtime(const time_t *time);
該函數返回一個指向表示本地時間的 tm 結構的指針。
4clock_t clock(void);
該函數返回程序執行起(一般為程序的開頭),處理器時鐘所使用的時間。如果時間不可用,則返回 .1。
5char * asctime ( const struct tm * time );
該函數返回一個指向字符串的指針,字符串包含了 time 所指向結構中存儲的信息,返回形式為:day month date hours:minutes:seconds year\n\0。
6struct tm *gmtime(const time_t *time);
該函數返回一個指向 time 的指針,time 為 tm 結構,用協調世界時(UTC)也被稱為格林尼治標準時間(GMT)表示。
7time_t mktime(struct tm *time);
該函數返回日歷時間,相當于 time 所指向結構中存儲的時間。
8double difftime ( time_t time2, time_t time1 );
該函數返回 time1 和 time2 之間相差的秒數。
9size_t strftime();
該函數可用于格式化日期和時間為指定的格式。

當前日期和時間

下面的實例獲取當前系統的日期和時間,包括本地時間和協調世界時(UTC)。

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

當上面的代碼被編譯和執行時,它會產生下列結果:

本地日期和時間:Sat Jan  8 20:07:41 2011UTC 日期和時間:Sun Jan  9 03:07:41 2011

使用結構 tm 格式化時間

tm 結構在 C/C++ 中處理日期和時間相關的操作時,顯得尤為重要。tm 結構以 C 結構的形式保存日期和時間。大多數與時間相關的函數都使用了 tm 結構。下面的實例使用了 tm 結構和各種與日期和時間相關的函數。

在練習使用結構之前,需要對 C 結構有基本的了解,并懂得如何使用箭頭 -> 運算符來訪問結構成員。

#include <iostream>
#include <ctime>using namespace std;int main(){// 基于當前系統的當前日期/時間time_t now = time(0);cout << "1970年1月1日到目前經過的秒數:" << now << endl;tm *ltm = localtime(&now);// 輸出 tm 結構的各個組成部分cout << "年: "<< 1900 + ltm->tm_year << endl;cout << "月: "<< 1 + ltm->tm_mon<< endl;cout << "日: "<<  ltm->tm_mday << endl;cout << "時間: "<< 1 + ltm->tm_hour << ":";cout << 1 + ltm->tm_min << ":";cout << 1 + ltm->tm_sec << endl;
} 

當上面的代碼被編譯和執行時,它會產生下列結果:

1970年1月1日到目前經過的秒數:1524456057
年: 2018
月: 4
日: 23
時間: 5:1:58

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

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

相關文章

電子配件行業的未來之路:產品說明書數字化轉型的力量

在科技飛速發展的今天&#xff0c;電子配件行業作為科技創新的前沿陣地&#xff0c;正經歷著前所未有的變革。從智能手機、平板電腦到智能穿戴設備&#xff0c;各種新型電子配件層出不窮&#xff0c;極大地豐富了人們的生活。然而&#xff0c;隨著產品種類的增多和功能的復雜化…

強化學習方法分類詳解

強化學習方法分類詳解 引言 強化學習&#xff08;Reinforcement Learning, RL&#xff09;是一種通過智能體與環境互動來學習如何做出最佳決策的方法。根據不同的優化中心、策略特性、環境模型、獎勵函數、動作空間類型以及行為策略和目標策略的一致性&#xff0c;RL可以分為…

RockyLinux介紹及初始化

文章目錄 一、背景二、下載 RockyLinux9 鏡像三、環境初始化四、安裝 Docker 環境 一、背景 這里講一個小故事&#xff1a; 我們都知道Linux 內核是由芬蘭計算機科學家林納斯托瓦茲 (Linus Torvalds) 于 1991 年首次開發的&#xff0c;隨后有一個非常重要的公司RetHat成立&am…

AWS、Google Cloud Platform (GCP)、Microsoft Azure、Linode和 桔子數據 的 價格對比

要對比 AWS、Google Cloud Platform (GCP)、Microsoft Azure、Linode 和 桔子數據 的 價格&#xff0c;我們需要先了解每個平臺的定價模型、服務類型以及不同服務之間的價格差異。以下是根據各個平臺常見服務&#xff08;如計算實例、存儲、數據傳輸等&#xff09;做的一個 簡化…

OpenCV相機標定與3D重建(36)計算兩幅圖像之間基本矩陣(Fundamental Matrix)的函數findFundamentalMat()的使用

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 從兩幅圖像中的對應點計算基本矩陣。 cv::findFundamentalMat 是 OpenCV 中用于計算兩幅圖像之間基本矩陣&#xff08;Fundamental Matrix&#…

Vscode + gdbserver遠程調試開發板指南:

本章目錄 步驟環境準備網絡配置vscode配置步驟 (全圖示例)開發板配置開始調試注意: 每次斷開之后&#xff0c;開發板都需要重新啟動gdbserver才可調試。 參考鏈接: 步驟 環境準備 將交叉編譯鏈路徑加入$PATH變量&#xff1a;確保系統能夠找到所需的工具。 export PATH$PATH:/p…

對外發PDF設置打開次數

在線 Host PDF 文件并對鏈接進行限制——保障文件安全的最佳解決方案 在數字化辦公和遠程協作日益普及的今天&#xff0c;如何安全高效地分享 PDF 文件成為許多用戶關注的重點。MaiPDF 作為一款功能強大的在線工具&#xff0c;不僅支持在線 host PDF 文件&#xff0c;還提供多…

VS2022 中的 /MT /MTd /MD /MDd 選項

我們有時編譯時,需要配置這個 運行庫,指定C/C++運行時庫的鏈接方式。 如下圖 那么這些選項的含義是什么? /MT:靜態鏈接多線程庫 /MT選項代表“Multi-threaded Static”,即多線程靜態庫。選擇此選項時,編譯器會從運行時庫中選擇多線程靜態連接庫來解釋程序中的代碼,…

MacOS下TestHubo安裝配置指南

TestHubo是一款開源免費的測試管理工具&#xff0c; 下面介紹MacOS私有部署的安裝與配置。TestHubo 私有部署版本更適合有嚴格數據安全要求的企業&#xff0c;支持在本地或專屬服務器上運行&#xff0c;以實現對數據和系統的完全控制。 1、Mac 服務端安裝 Mac安裝包下載地址&a…

Windows 11 配置gym、mujoco、mujoco-py環境教程

Windows 11 配置gym、mujoco、mujoco-py環境教程 整理了windows11系統安裝mujoco、mujoco_py、gym的教程以及報錯解決方法。 環境版本 mujoco-py-2.1.2.14 mujoco210 gym==0.23.1 python 3.9.16 pytorch 1.12.1+cu113 mujoco安裝 1. 在Github中下載mujoco210壓縮包 G…

Java重要面試名詞整理(五):Redis

文章目錄 Redis高級命令Redis持久化RDB快照&#xff08;snapshot&#xff09;**AOF&#xff08;append-only file&#xff09;****Redis 4.0 混合持久化** 管道&#xff08;Pipeline&#xff09;**StringRedisTemplate與RedisTemplate詳解**Redis集群方案gossip腦裂 Redis LuaR…

Amazon Bedrock 實踐 - 利用 Llama 3.2 模型分析全球糖尿病趨勢

黃浩文 資深開發者布道師 亞馬遜云科技 擁有電信、互聯網以及云計算等行業超過 20 年的豐富經驗&#xff0c;曾任職于微軟、Sun 和中國電信。他目前專注于生成式 AI、大型語言模型 (LLM)、機器學習和數據科學等領域的技術內容創作和實踐分享&#xff0c;致力于賦能全球開發者。…

期權懂|如何計算期權賣方平倉后的盈利?

錦鯉三三每日分享期權知識&#xff0c;幫助期權新手及時有效地掌握即市趨勢與新資訊&#xff01; 如何計算期權賣方平倉后的盈利&#xff1f; 期權賣方平倉后的盈利計算涉及多個因素&#xff0c;包括期權的交易價格、平倉價格以及權利金的變動等。 交易價格&#xff1a;期權賣…

【連續學習之VCL算法】2017年論文:Variational continual learning

1 介紹 年份&#xff1a;2017 期刊&#xff1a; arXiv preprint Nguyen C V, Li Y, Bui T D, et al. Variational continual learning[J]. arXiv preprint arXiv:1710.10628, 2017. 本文提出的算法是變分連續學習&#xff08;Variational Continual Learning, VCL&#xf…

多視圖 (Multi-view) 與多模態 (Multi-modal)

多視圖 (Multi-view) 與多模態 (Multi-modal) 是兩種不同的數據處理方式&#xff0c;它們在機器學習和數據分析中有著重要的應用。盡管這兩者有一些相似之處&#xff0c;但它們關注的角度和處理方法有所不同。 多視圖 (Multi-view) 定義&#xff1a;多視圖指的是同一數據對象…

MySQL 性能瓶頸,為什么 MySQL 表的數據量不能太大?

MySQL的性能瓶頸(為什么MySQL有幾萬的qps,怎么來的?性能分析 為什么 MySQL 表不能太大網上大部分人的說法:問題的關鍵: B樹層數對查詢性能的影響到底有多大? 是什么導致的 MySQL 查詢緩慢?如何解決: MySQL的性能瓶頸(為什么MySQL有幾萬的qps,怎么來的? 一個全表掃描的查詢…

Linux 實用命令 grep、wc

grep 命令詳解 grep [選項] ‘模式’ 文件名 grep [參數] [選項] [操作對象]grep ‘error’ -c 5 --color info.log [模式]&#xff1a;是要搜索的字符串或正則表達式。 [選項]&#xff1a;是可選的&#xff0c;用于定制grep的行為。 [操作對象]&#xff1a;是要搜索的文件…

【Transformer】深入淺出自注意力機制

寫在前面&#xff1a;博主本人也是剛接觸計算機視覺領域不久&#xff0c;本篇文章是為了記錄自己的學習&#xff0c;大家一起學習&#xff0c;有問題歡迎大家指出。&#xff08;博主本人的習慣是看文章看到不懂的有立馬去看不懂的那塊&#xff0c;所以博文可能內容比較雜&#…

HarmonyOS NEXT 實戰之元服務:靜態案例效果---教育培訓服務

背景&#xff1a; 前幾篇學習了元服務&#xff0c;后面幾期就讓我們開發簡單的元服務吧&#xff0c;里面豐富的內容大家自己加&#xff0c;本期案例 僅供參考 先上本期效果圖 &#xff0c;里面圖片自行替換 效果圖1完整代碼案例如下&#xff1a; import { authentication } …

3.阿里云flinkselectdb-py作業

1.概述 Python API中文文檔 本文介紹在阿里云實時計算flink中使用python作業&#xff0c;把oss中的數據同步數據到阿里云selectdb的過程。python簡單的語法特性更適合flink作業的開發&#xff1b; 先說結論: 在實際開發中遇到了很多問題&#xff0c;導致python作業基本基本無法…