CT im e

CTime 没 有 基 类 。

一 个 CTime 对 象 代 表 一 个 绝 对 的 时 间 和 日 期 。 CTime 类 引 入 了 ANSI time_t 数据 类 型 以 及 其 相 关 的 运 行 时 函 数 , 其 中 包 括 向 或 自 一 个 Gregorian 日 期 和 24 -小时 时 间 的 转 换 功 能 。

CTime 值 是 基 于 世 界 标 准 时 间( UCT )的 , UCT 时 间 等 于 格 林 威 治( Greenwich ) 时 间 ( G M T ) 。 本 地 时 区 是 由 TZ 环 境 变 量 控 制 的 。

当 创 建 一 个 CTime 时 , 将 nDST 参 数 设 置 为 0 表 示 有 效 的 是 标 准 时 间 , 或 将 其设 置 为 大 于 0 表 示 有 效 的 白 天 保 留 时 间 , 将 其 设 置 为 小 于 零 的 值 表 示 由 C 运 行时 库 代 码 来 计 算 有 效 的 是 标 准 时 间 还 是 白 天 保 留 时 间 。 如 果 没 有 设 置 这 个 参数 , 则 它 的 值 是 不 明 确 的 , 而 从 mktime 返 回 的 值 是 不 可 预 知 的 。 如 果 timeptr

指 向 一 个 由 先 前 调 用 asctime, gmtim e,或 localtime 返 回 的 tm 结构,则 tm_isdst

域 包 含 了 适 当 的 值 。

参 见 “ M icrosoft Visual C++ 6.0 参 考 库 ” 的 “ M icrosoft Visual C++ 6.0 运 行 时 参考 库 ”卷 可 以 获 得 有 关 time_t 数 据 类 型 和 CTime 使 用 的 运 行 时 函 数 的 更 多 信 息 。

与 CTime 类 对 应 的 类 是 CTimeSpan 类 , 它 代 表 了 一 段 时 间 间 隔 –– – 两 个 CT im e

对 象 之 间 的 差 值 。

CTime 和 CTimeSpan 类 都 是 不 可 派 生 的 。因 为 没 有 虚 函 数 ,CTime 和 CTimeSpan

对 象 的 大 小 都 正 好 是 四 个 字 节 。 多 数 成 员 函 数 都 是 内 联 函 数 。

有 关 使 用 CTime 的 更 多 信 息 , 参 见 “ Visual C++ 程 序 员 指 南 ” 中 的 文 章 “ 日 期和 时 间 ” , 以 及 “ M icrosoft Visual C++ 6.0 运 行 时 库 参 考 ” 中 的 “ 时 间 管 理 ” 。#include <afx.h>

请 参 阅 运 行 时 函 数 : asctime, _ftime, gmtime, locaItime, strftime, time

CTime 类 成 员

Construction

Ctime 用 各 种 方 法 构 造 一 个 Ctime 对象

GetCurrentTime 创 建 一 个 代 表 当 前 时 间 的 CTime 对 象 ( 静 态 成 员 函

数 )

Extraction

GetTime 返 回 一 个 与 此 CTime 对 象 对 应 的 time_t

GetYear 返 回 此 CTime 对 象 代 表 的 年

GetMonth 返 回 此 CTime 对 象 代 表 的 月 ( 1 至 12 )

GetDay 返 回 此 CTime 对 象 代 表 的 日 ( 1 至 31 )

GetHour 返 回 此 CTime 对 象 代 表 的 小 时 ( 0 至 23 ) GetMinute 返 回 此 CTime 对 象 代 表 的 分 钟 ( 0 至 59 ) GetSecond 返 回 此 CTime 对 象 代 表 的 秒 ( 0 至 59 )

GetDayOfWeek 返 回 此 日 是 星 期 几 ( 1 代 表 星 期 日 , 2 代 表 星 期 一 , 以 此 类 推 )

Conversion

GetGmtTm 根 据 UCT 将 一 个 CTime 对 象 分 解 为 它 的 组 成 部 分

GetLocalTm 根 据 本 地 时 区 时 将 一 个 CTime 对 象 分 解 为 它 的 组

成 部 分

GetAsSystemTime 将 CTime 对 象 中 保 存 的 时 间 信 息 转 换 为 一 个 与

W in32 兼 容 的 SYSTEMTIME 结 构

Format 根 据 本 地 时 区 时 将 一 个 CTime 对 象 转 换 为 一 个 格式 化 字 符 串

FormatGmt 根 据 UCT 将 一 个 CTime 对 象 转 换 为 一 个 格 式 化 字

符 串

Operators

Operator = 赋 一 个 新 的 时 间 值

Operator + - 将 CTime 对 象 加 上 或 减 去 一 个 CTimeSpan 对象Operator +=, -= 将 此 CTime 对 象 加 上 或 减 去 一 个 CTimeSpan 对 象Operator ==, <, etc. 比 较 两 个 绝 对 时 间

Archive/Dump

operator<< 向 一 个 CArchive 或 CDumpContext 输 出 一 个 CTime

对 象

operator>> 从 CArchive 输 入 一 个 CTime 对 象

成 员 函 数

CTime::CTime

CTime( );

CTime( const CTime& timeSrc ); CTime( time_t time );

CTime( int nYea r, int nMonth , int nDay , int nHour , int nMin , int nSec , int nDST = - 1 );

CTime( WORD wDosDate , W O R D wDosTim e, int nDST = -1 ); CTime( const SYSTEMTIME& sysTim e, int nDST = -1 ); CTime( const FILETIME& fileTime , int nDST = -1 );

参 数

timeSrc

表 示 一 个 已 经 存 在 的 CTime 对 象 。

time

表 示 一 个 时 间 值 。

nYear,nMonth, nDay, nHour, nMin, nSec

表 示 要 拷 贝 到 新 的 CTime 对 象 中 去 的 日 期 和 时 间 值 。

n DST

表 明 有 效 的 是 否 是 daylight saving tim e。 可 以 是 下 列 三 个 值 中 的 某 一 个 :

  • nDST 被 设 置 为 0 表 示 起 作 用 的 是 标 准 时 间 。

  • nDST 被 设 置 为 一 个 大 于 0 的 值 表 示 起 作 用 的 是 daylight

    saving tim e。

  • nDST 被 设 置 为 一 个 小 于 0 的 值 表 示 要 自 动 计 算 起 作 用

    的 是 标 准 时 间还是 daylight saving tim e。

wDosDate, wDosTime

要 被 转 换 为 一 个 日 期 /时 间 值 并 被 拷 贝 到 新 的 CTime 对 象 中 去 的 MSDOS

日 期 和 时 间 。

sysTime

要 被 转 换 为 一 个 日 期 / 时 间 值 并 被 拷 贝 到 新 的 CTime 对 象 中 去 的

SYSTEMTIME 结 构 。

fileTime

要 被 转 换 为 一 个 日 期 /时 间 值 并 被 拷 贝 到 新 的 CTime 对 象 中 去 的 FILETIME

结 构 。

说 明

所 有 这 些 构 造 函 数 都 创 建 一 个 新 的 CTime 对 象 , 并 用 指 定 的 基 于 当 前 时 区 的 绝对 时 间 值 来 初 始 化 这 个 对 象 。

下 面 是 对 每 一 个 构 造 函 数 的 描 述 :

  • CTime( ); 构 造 一 个 没 有 初 始 化 的 CTime 对 象 。 这 个 构 造

    函 数 允 许 你 定 义

CTime 对 象 数 组 。 在 使 用 此 对 象 之 前 , 你 应 该 用 有 效 的 时 间 来 初 始 化 这 个

数 组 。

  • CTime( const CTime& ); 从 另 一 个 CTime 值 构 造 一 个 CTime 对 象

  • CTime( time_t ); 从 一 个 time_t 类 型 构 造 一 个 CTime 对 象 。

  • CTime( int, int, etc. ); 从 本 地 时 间 成 分 构 造 一 个 CTime 对

    象 , 每 一 个 时 间成 分 被 约 束 在 下 列 范 围 :

Component Range

NYear 1970 – – 2038*

NMonth 1 – – 1 2

NDay 1 – – 31

NHour 没 有 约 束

NMin 没 有 约 束

NSec 没 有 约 束

* 最 大 的 日 期 限 是 1/18/2038 。 更 宽 的 日 期 范 围 , 参 见 COleDateTim e。

这 个 构 造 函 数 进 行 到 UTC 的 相 应 转 换 。 如 果 一 个 或 多 个 年 , 月 , 或 日 成 分 超

出 了 范 围 , 则 Microsoft 基 础 类 库 的 调 试 版 会 给 出 断 言 。 在 调 用 之 前 由 你 负 责检 验 参 数 。

  • CTime( WORD, WORD ); 根 据 指 定 的 MSDOS 日 期 和 时 间 构 造 一 个

    CTime

对 象 。

  • CTime( const SYSTEMTIME& ); 根 据 一 个 SYSTEMTIME 结 构 构 造 一 个

CTime 对 象 。

  • CTime( const FILETIME& ); 根 据 一 个 FILETIME 结 构 构 造 一 个

    CTime 对象 。你 最 好 不 要 直 接 使 用 CTime FILETIME 初 始 化 。如 果 你 使 用 一 个 CTime 对 象 来 操 纵 一 个 文 件 , 则 CFile::GetStatus 通 过 使 用 一 个 用 FILETIME 结 构初 始 化 的 CTime 对 象 来 为 你 获 取 该 文 件 的 时 间 标 记 。

有 关 time_t 数 据 类 型 的 更 多 信 息 , 参 见 “ Microsoft Visual C++ 6.0 运 行 库 参 考 ” 中 的 时 间 函 数 。

结 构 。

更 多 的 信 息 , 参 见 W in32 SDK 文 档 中 的 M S D O S 日 期 和 时 间 项 。

示 例

// CTime::CTime 示例

time_t osBinaryTime; // C 运行时时间 ( 在 <time.h> 中定义 ) time( &osBinaryTime ) ; // 从操作系统中获取当前时间CTime time1; // 空的 CTime. (0 是不合法的时间值 .) CTime time2 = time1; // 拷贝构造函数

CTime time3( osBinaryTime ); // 根据 C 运行时时间构造 CTime CTime time4( 1999, 3, 19, 22, 15, 0 ); // 10:15PM March 19, 1999

请 参 阅 CTime::GetTime, GetCurrentTime, operator =

CTime::Format

CString Format( LPCTSTR pFormat ) const;

返 回 值

返 回 一 个 包 含 了 格 式 化 时 间 的 CString。

参 数

pFormat

一 个 类 似 于 printf 格 式 化 字 符 串 的 格 式 化 字 符 串 。前 面 有 一 个 百 分 号( % ) 标 记 的 格 式 化 代 码 , 被 相 应 的 CTime 成 分 替 换 。 格 式 化 字 符 串 中 的 其 它字 符 被 不 作 变 动 地 拷 贝 到 返 回 字 符 串 中 。 参 见 运 行 时 函 数 strftime 可 以 获得 详 细 的 信 息 。 Format 的 格 式 化 代 码 的 值 和 意 义 如 下 所 示 :

  • % D 此 CTime 中 的 总 天 数 。

  • % H 当 前 天 的 小 时 。

  • % M 当 前 小 时 中 的 分 钟 。

  • %S 当 前 分 钟 中 的 秒 。

  • % % 百 分 号 。

nFormatID

用 来 表 示 这 个 格 式 的 字 符 串 的 ID 。

说 明

此 成 员 函 数 用 来 创 建 一 个 日 期 / 时 间 值 的 格 式 化 表 达 式 。 如 果 此 CTime 对 象 的状 态 是 空 , 则 返 回 值 是 一 个 空 字 符 串 。 如 果 CTime 对 象 的 状 态 是 无 效 , 则 返 回值 是 一 个 空 字 符 串 。

示 例

// CTime::Format 和 CTime::FormatGmt 的示例

CTime t( 1999, 3, 19, 22, 15, 0 );

// 10:15PM March 19, 1999

CString s = t.Format( "%A, %B %d, %Y" ); ASSERT( s == "Friday, March 19, 1999" );

请 参 阅 CTime::FormatGmt

CTime::FormatGmt

CString FormatGmt( LPCTSTR pFormat ) const; C String FormatGmt( UINT nFormatID ) const;

返 回 值

一 个 包 含 格 式 化 时 间 的 CString 。

参 数

pFormat

一 个 类 似 于 printf 格 式 化 字 符 串 的 格 式 化 字 符 串 。 细 节 参 见 运 行 时 函 数

strftim e。

nFormatID

用 来 表 示 这 个 格 式 的 字 符 串 的 ID 。

说 明

此 成 员 函 数 用 来 生 成 一 个 对 应 于 这 个 CTime 对 象 的 格 式 化 字 符 串 。 这 个 时 间 值没 有 被 转 换 , 因 此 是 反 映 UTC 的 。

请 参 阅 CTime::Format

CTime::GetAsSystemTime

BOOL GetAsSystemTime( SYSTEMTIME& timeDest ) const;

返 回 值

如 果 成 功 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

timeDest

是 一 个 对 SYSTEMTIME 结 构 的 引 用 , 该 结 构 要 被 转 换 为 一 个 日 期 /时 间值 并 被 拷 贝 到 新 的 CTime 对 象 中 。

说 明

此 成 员 函 数 用 来 将 保 存 在 CTime 对 象 中 的 时 间 信 息 转 换 为 一 个 W in32 兼 容 的SYSTEMTIME 结 构 。 GetAsSystemTime 将 结 果 时 间 保 存 在 引 用 的 timeDest 对象 中 。 由 这 个 函 数 初 始 化 的 SYSTEMTIME 数 据 结 构 把 它 的 w M illiseconds 成 员设 置 为 零 。

CTime::GetCurrentTime

static CTime PASCAL GetCurrentTime( );

说 明

此 成 员 函 数 返 回 一 个 代 表 当 前 时 间 的 CTime 对 象 。

示 例

// CTime::GetCurrentTime 示例

CTime t = CTime::GetCurrentTime();

CTime::GetDay int GetDay( ) const; 说 明

此 成 员 函 数 根 据 本 地 时 间 返 回 范 围 在 1 – – 31 之 间 的 该 月 的 天 。 这 个 函 数 调 用

GetLocalTm ,该 函 数 使 用 了 一 个 内 部 的 、静 态 分 配 的 缓 冲 区 。调 用 其 它 的 CTime

成 员 函 数 会 导 致 这 个 缓 冲 区 中 的 数 据 被 覆 盖 。

示 例

// CTime::GetDay, CTime::GetMonth, 和 CTime::GetYear 的示例CTime t( 1999, 3, 19, 22, 15, 0 ); // 10:15PM March 19, 1999 ASSERT( t.GetDay() == 19 );

ASSERT( t.GetMonth() == 3 ); ASSERT( t.GetYear() == 1999 );

请 参 阅 CTime::GetDagOfWeek

CTime::GetDayOf W eek

int GetDayOfWeek( ) const;

说 明

此 成 员 函 数 根 据 本 地 时 间 返 回 该 星 期 的 天 ; 1 就 是 星 期 日 , 2 就 是 星 期 一 , ...,

7 就 是 星 期 六 。 这 个 函 数 调 用 GetLocalTm , 该 函 数 使 用 了 一 个 内 部 的 , 静 态 分配 的 缓 冲 区 。 调 用 其 它 的 CTime 成 员 函 数 会 导 致 这 个 缓 冲 区 中 的 数 据 被 覆 盖 。

CTime::GetGmtTm

struct tm* GetGmtTm( struct tm* ptm = NULL ) const;

返 回 值

返 回 一 个 指 向 已 填 好 的 struct tm 的 指 针 , struct tm 是 在 包 含 文 件 TIME.H 中定义 的 。 该 结 构 的 成 员 和 值 如 下 所 示 :

  • tm_sec 秒

  • tm_min 分 钟

  • tm_hour 小 时 ( 0 – – 23 )

  • tm_mday 月 中 的 日 ( 1 – – 31 )

  • tm_mon 月 ( 0 - 11 ; 一 月 = 0 )

  • tm_year 年 ( 实 际 的 年 减 1900 的 差 )

  • tm_wday 星 期 几 ( 1 - 7 ; 星 期 日 = 1 )

  • tm_yday 年 中 的 日 ( 0 - 365 ; 一 月 一 日 = 0 )

  • tm_isdst 总 是 0

注 意 struct tm 中 的 年 是 在 范 围 70 至 138 之 间 的 ; 在 CTime 中 , 年 的范 围 是 1970 到 2038 ( 包 含 2038 ) 。

ptm

指 向 一 个 将 用 来 接 收 实 际 数 据 的 缓 冲 区 。 如 果 这 个 指 针 是 NULL , 则 使用 一 个 内 部 的 , 静 态 分 配 的 缓 冲 区 。 调 用 其 它 的 CTime 成 员 函 数 将 导 致此 缓 冲 区 中 的 数 据 被 改 写 。

说 明

此 成 员 函 数 用 来 获 取 一 个 包 含 在 此 CTime 对 象 中 所 含 的 时 间 分 解 struct tm 。

GetGmtTm 返 回 UTC 。

这 个 函 数 调 用 GetLocalTm , 该 函 数 使 用 了 一 个 内 部 的 、 静 态 分 配 的 缓 冲 区 。 调用 其 它 的 CTime 成 员 函 数 会 导 致 这 个 缓 冲 区 中 的 数 据 被 覆 盖 。

参 见 GetLocalTm 的 示 例 。

CTime::GetHour int GetHour( ) const; 说 明

此 成 员 函 数 根 据 本 地 时 间 返 回 范 围 在 0 至 23 之 间 的 小 时 。 这 个 函 数 调 用GetLocalTm ,该 函 数 使 用 了 一 个 内 部 的 、静 态 分 配 的 缓 冲 区 。调 用 其 它 的 CTime 成 员 函 数 会 导 致 这 个 缓 冲 区 中 的 数 据 被 覆 盖 。

示 例

// CTime::GetHour, CTime::GetMinute, 和 CTime::GetSecond 的示例

CTime t( 1999, 3, 19, 22, 15, 0 ); // 10:15PM March 19, 1999

ASSERT( t.GetSecond() == 0 ); ASSERT( t.GetMinute() == 15 ); ASSERT( t.GetHour() == 22 );

CTime::GetLocalTm

struct tm* GetLocalTm( struct tm* ptm = NULL ) const;

返 回 值

返 回 一 个 指 向 已 填 好 的 struct tm 的 指 针 , struct tm 是 在 包 含 文 件 TIME.H 中定义 的 。 关 于 该 结 构 的 成 员 安 排 , 参 见 GetGmtTm 。

参 数

ptm

指 向 一 个 将 用 来 接 收 实 际 数 据 的 缓 冲 区 。 如 果 这 个 指 针 是 NULL , 则 使

用 一 个 内 部 的 、 静 态 分 配 的 缓 冲 区 。 调 用 其 它 的 CTime 成 员 函 数 将 导 致此 缓 冲 区 中 数 据 被 改 写 。

说 明

此 成 员 函 数 用 来 获 取 一 个 包 含 此 CTime 对 象 的 分 解 后 的 各 个 成 分 的 struct tm 。

GetLocalTm

返 回 本 地 数 据 。

示 例

// CTime::GetLocalTm 示例

CTime t( 1999, 3, 19, 22, 15, 0 ); // 10:15PM March 19, 1999

struct tm* osTime; // 指向一个包含数据元素的指针。

osTime = t.GetLocalTm( NULL );

ASSERT( osTime->tm_mon == 2 ); // Note zero-based month!

CTime::GetMinute int GetMinute( ) const; 说 明

此 成 员 函 数 根 据 本 地 时 间 返 回 范 围 在 0 至 59 之 间 的 分 钟 。 这 个 函 数 调 用GetLocalTm ,该 函 数 使 用 了 一 个 内 部 的 、静 态 分 配 的 缓 冲 区 。调 用 其 它 的 CTime 成 员 函 数 会 导 致 这 个 缓 冲 区 中 的 数 据 被 覆 盖 。

CTime::GetMonth int GetMonth( ) const; 说 明

此 成 员 函 数 根 据 本 地 时 间 返 回 范 围 在 1 至 12 之 间 的 月 ( 1 = 一 月 ) 。 这 个 函 数

调 用 GetLocalTm , 该 函 数 使 用 了 一 个 内 部 的 、 静 态 分 配 的 缓 冲 区 。 调 用 其 它 的

CTime 成 员 函 数 会 导 致 这 个 缓 冲 区 中 的 数 据 被 覆 盖 。

示 例

参 见 GetDay 的 示 例 。

CTime::GetSecond int GetSecond( ) const; 说 明

此 成 员 函 数 根 据 本 地 时 间 返 回 范 围 在 0 至 59 之 间 的 秒 。 这 个 函 数 调 用GetLocalTm ,该 函 数 使 用 了 一 个 内 部 的 、静 态 分 配 的 缓 冲 区 。调 用 其 它 的 CTime 成 员 函 数 会 导 致 这 个 缓 冲 区 中 的 数 据 被 覆 盖 。

CTime::GetTime time_t GetTime( ) const; 说 明

此 成 员 函 数 返 回 一 个 给 定 CTime 对 象 的 time_t 值 。

示 例

// CTime::GetTime 示例

CTime t( 1999, 3, 19, 22, 15, 0 ); // 10:15PM March 19, 1999

time_t osBinaryTime = t.GetTime(); // time_t 在 <time.h> 中定义

printf( "time_t = %ld\n", osBinaryTime );

请 参 阅 CTime::CTime

CTime::GetYear

int GetYear( ) const;

说 明

此 成 员 函 数 根 据 本 地 时 间 返 回 范 围 在 1970 年 1 月 1 日 至 2038 年 1 月 18 日 之间 的 年 。 这 个 函 数 调 用 GetLocalTm , 该 函 数 使 用 了 一 个 内 部 的 , 静 态 分 配 的 缓冲 区 。 调 用 其 它 的 CTime 成 员 函 数 会 导 致 这 个 缓 冲 区 中 的 数 据 被 覆 盖 。

示 例

参 见 GetDay 的 示 例 。

请 参 阅 CTime::CTime

操 作 符

CTime::operator =

const CTime& operator =( const CTime& timeSrc ); const CTime& operator =( time_t t );

说 明

这 些 重 载 的 赋 值 操 作 符 将 源 时 间 拷 贝 到 此 CTime 对 象 中 。

保 存 在 一 个 CTime 对 象 中 的 内 部 时 间 与 时 区 无 关 。 在 赋 值 操 作 中 不 用 进 行 时 区转 换 。

示 例

// CTime::operator = 示 例

time_t osBinaryTime; // C 运行时时间 ( 在 <time.h> 中定义 ) CTime t1 = osBinaryTime; // Assignment from time_t

CTime t2 = t1; // Assignment from CTime

请 参 阅 CTime::CTime

CTime::operator +, -

CTime operator +( CTimeSpan timeSpan ) const; CTime operator - CTimeSpan timeSpan ) const; CTimeSpan operator - CTime time ) const;

说 明

CTime 对 象 表 示 绝 对 时 间 。 CTimeSpan 对 象 表 示 相 对 时 间 。 前 两 个 操 作 符 允 许你 向 或 从 CTime 对 象 中 加 上 或 减 去 一 个 CTimeSpan 对 象 。 第 三 个 操 作 符 允 许你 将 两 个 CTime 对 象 相 减 产 生 一 个 CTimeSpan 对 象 。

// CTime::operator +, - 示例

CTime t1( 1999, 3, 19, 22, 15, 0 ); // 10:15PM March 19, 1999

CTime t2( 1999, 3, 20, 22, 15, 0 ); // 10:15PM March 20, 1999

CTimeSpan ts = t2 - t1; // Subtract 2 CTimes ASSERT( ts.GetTotalSeconds() == 86400L );

ASSERT( ( t1 + ts ) == t2 ); // Add a CTimeSpan to a CTime. ASSERT( ( t2 - ts ) == t1 ); // Subtract a CTimeSpan from a Ctime.

CTime::operator +=, -=

const CTime& operator +=( CTimeSpan timeSpan ); const CTime& operator ?( CTimeSpan timeSpan );

说 明

这 些 操 作 符 允 许 你 从 此 CTime 对 象 中 加 上 或 减 去 一 个 CTimeSpan 对 象 。

// CTime::operator -= 示例

CTime t( 1999, 3, 19, 22, 15, 0 ); // 10:15PM March 19, 1999

t += CTimeSpan( 0, 1, 0, 0 ); // 1 hour exactly ASSERT( t.GetHour() == 23 );

CTime Comparison Operators

BOOL operator ==( CTime tim e ) const; BOOL operator !=( CTime time ) const; BOOL operator <( CTime time ) const; BOOL operator >( CTime time ) const; BOOL operator <=( CTime tim e ) const; BOOL operator >=( CTime tim e ) const;

说 明

这 些 操 作 符 比 较 两 个 绝 对 时 间 , 如 果 测 试 条 件 为 真 则 返 回 非 零 值 ; 否 则 返 回 0 。

// C time 比较操作符示例

CTime t1 = CTime::GetCurrentTime();

CTime t2 = t1 + CTimeSpan( 0, 1, 0, 0 ); // 1 hour later ASSERT( t1 != t2 );

ASSERT( t1 < t2 );

ASSERT( t1 <= t2 );

CTime::operators <<, >>

friend CDumpContext& AFXAPI operator<<( CDumpContext& dc, CTime time ); friend CArchive& AFXAPI operator<<( CArchive& ar, CTime time );

friend CArchive& AFXAPI operator>>( CArchive& ar, CTime& rtime );

说 明

CTime 插 入 操 作 符 ( << ) 支 持 向 一 个 存 档 中 进 行 诊 断 存 档 和 转 储 。 提 取 操 作 符

( >> ) 支 持 从 一 个 存 档 装 入 。

// CTime::operators <<, >> 示例

CTime t( 1999, 3, 19, 22, 15, 0 ); // 10:15PM March 19, 1999

afxDump << t << "\n"; // Prints 'CTime("Fri Mar 19 22:15:00 1999")'.

extern CArchive ar; if( ar.IsLoading() ) ar >> t;

else

ar << t;

请 参 阅 CArchive, CdumpContext