更新时间:2024-05-07 GMT+08:00

日期类型

表1列出了ecpg提供的日期类型(date)数据的常用接口:

表1 日期类型常用接口

API接口

接口描述

说明

date* PGTYPESdate_new(void)

返回一个已分配的date变量的指针。

该函数在堆上创建date变量,返回值为date*类型。

void PGTYPESdate_free(date*)

释放已经分配date变量的内存。

释放通过PGTYPESdate_free函数创建的date*类型变量。

date PGTYPESdate_from_asc(char* str, char** endptr)

从日期的文本表达解析一个日期。

该函数接收一个C的字符串str以及一个指向C字符串的指针endptr。ecpg将文本表达的日期解析为字符串形式。当前不支持将第一个非法字符的地址存储在*endptr中,可以把endptr设置为NULL。

注意该函数假定日期格式按照MDY进行格式化,并且当前在ecpg中没有变体可以改变这种格式。

char* PGTYPESdate_to_asc(date dDate)

返回一个日期变量的文本表达。

该函数接收日期dDate作为它的唯一参数。以YYYY-MM-DD格式输出。

date PGTYPESdate_from_timestamp(timestamp dt)

从一个时间戳中抽取日期部分。

该函数接收一个时间戳作为它的唯一参数并且从这个时间戳返回抽取的日期部分。

void PGTYPESdate_julmdy(date jd, int* mdy)

从一个日期类型变量中抽取日、月和年的值。

该函数接收日期jd以及一个指向有3个整数值的数组mdy的指针。变量名就表明了顺序:mdy[0]表示月份,mdy[1]表示日,而mdy[2]表示年。

void PGTYPESdate_mdyjul(int* mdy, date* jdate)

使用指定的整型数值创建日期。

这个函数接收3个整数(mdy)组成的数组作为其第一个参数,三个整数分别用来表示日、月和年。第二个参数是一个指向日期类型变量的指针,它被用来保存操作的结果。

int PGTYPESdate_dayofweek(date d)

为一个日期值返回表示它是星期几的数字。

这个函数接收日期变量d作为它唯一的参数并且返回一个整数说明这个日期是星期几。

void PGTYPESdate_today(date* d)

得到当前日期。

该函数接收一个指向日期变量(d)的指针并且把该参数设置为当前日期。
  • 0:星期日
  • 1:星期一
  • 2:星期二
  • 3:星期三
  • 4:星期四
  • 5:星期五
  • 6:星期六

int PGTYPESdate_defmt_asc(date* d, const char* fmt, char* str)

使用一个格式掩码把一个C的char*返回串转换成一个日期类型的值。

该函数接收一个用来保存操作结果的指向日期值的指针(d)、用于解析日期的格式掩码(fmt)以及包含日期文本表达的C char*串(str)。该函数期望文本表达匹配格式掩码。不需要字符串和格式掩码的一一映射。该函数只分析相继顺序并且查找表示年份位置的文字yy或者yyyy、表示月份位置的mm以及表示日位置的dd。注意不能使用中文年月日,例如,七月八日。

合法输入示例如下(fmt,str):

yy/mm/dd 在2525年,7月28号人类仍存活
dd-mm-yy 2525年7月28号
yy/mm/dd 1994, February 3rd

int PGTYPESdate_fmt_asc(dat dDate, const char* fmtstring, char* outbuf)

使用一个格式掩码将一个日期类型的变量转换成它的文本表达。

该函数接收要转换的日期(dDate)、格式掩码(fmtstring)以及将要保存日期的文本表达的字符串(outbuf)。

成功时,返回0;如果发生错误,则返回一个负值。

合法输入示例如下:
112359            //mmddyy
59/11/23          //yy/mm/dd
Nov.23,1959       //mmm.dd,yyyy
Mon,Nov.23,1959   //ddd,mmm.dd,yyyy
格式说明:
  • dd:一个月中的第几天。
  • mm:一年中的第几个月。
  • yy:两位数的年份。
  • yyyy:四位数的年份。
  • ddd:星期几的名称。
  • mmm:月份的名称。

示例

请参见常用示例章节。