C语言如何获取本地时间,然后取时、分、秒的值

C语言如何获取本地时间,然后取时、分、秒的值,第1张

C语言有2个获取时间函数,分别是time()和localtime(),time()函数返回unix时间戳-即从1970年1月1日0:00开始所经过得秒数,而localtime()函数则是将这个秒数转化为当地的具体时间(年月日时分秒)

这里时间转化要用到一个“struct tm”的结构体,结构如下:

struct tm {

int tm_sec;       / 秒 – 取值区间为[0,59] /

int tm_min;       / 分 - 取值区间为[0,59] /

int tm_hour;      / 时 - 取值区间为[0,23] /

int tm_mday;     / 一个月中的日期 - 取值区间为[1,31] /

int tm_mon;     / 月份(从一月开始,0代表一月) - 取值区间为[0,11] /

int tm_year;     / 年份,其值等于实际年份减去1900 /

int tm_wday;    / 星期 – 取值区间为[0,6],其中0代表星期天,1代表星期一 /

int tm_yday;    / 从每年1月1日开始的天数– 取值区间[0,365],其中0代表1月1日 /

int tm_isdst;    / 夏令时标识符,夏令时tm_isdst为正;不实行夏令时tm_isdst为0 / 

};

示例代码:

#include<stdioh>

#include<timeh>

int getTime()

{

time_t t;                   //保存unix时间戳的变量 ,长整型

struct tm lt;           //保存当地具体时间的变量

int p;                     

time(&t);                // 等价于 t =time(NULL);获取时间戳

lt = localtime(&t);  //转化为当地时间

p = lt->tm_sec;     //将秒数赋值给p

return p;

}

应该就是这样啦~

我将获取方法封装成一个名字叫week的函数了,他的三个参数分别是年月日,在里面会打印输出当天是星期几,不懂的地方给我留言

#include

#include

void

week(int

year,

int

month,

int

day)

{

tm

tmTime

=

{0};

time_t

tTime;

tmTimetm_year

=

year-1900;

tmTimetm_mon

=

month-

1;

tmTimetm_mday

=

day;

tTime

=

mktime(&tmTime);

int

week

=

localtime(&tTime)->tm_wday;

if

(week

!=

0)

printf("%d年%d月%d日是星期%d\n",

year,

month,

day,

week);

else

printf("%d年%d月%d日是星期日\n",

year,

month,

day);

}

void

main()

{

week(2010,

11,

1);

}

转自: >

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

//获取前月的第一天

Calendar cal_1=CalendargetInstance();//获取当前日期

cal_1add(CalendarMONTH, -1);

cal_1set(CalendarDAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天

firstDay = formatformat(cal_1getTime());

Systemoutprintln("-----1------firstDay:"+firstDay);

//获取前月的最后一天

Calendar cale = CalendargetInstance();

caleset(CalendarDAY_OF_MONTH,0);//设置为1号,当前日期既为本月第一天

lastDay = formatformat(calegetTime());

Systemoutprintln("-----2------lastDay:"+lastDay);

//获取当前月第一天:

Calendar c = CalendargetInstance();

cadd(CalendarMONTH, 0);

cset(CalendarDAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天

String first = formatformat(cgetTime());

Systemoutprintln("===============first:"+first);

//获取当前月最后一天

Calendar ca = CalendargetInstance();

caset(CalendarDAY_OF_MONTH, cagetActualMaximum(CalendarDAY_OF_MONTH));

String last = formatformat(cagetTime());

Systemoutprintln("===============last:"+last);

1、首先要判断一个年份是闰年还是平年,用一个子程序来做。

2、然后就开始写主程序,首先用scanf得到一个年份。

3、在判断这个年份是平年还是闰年后用printf在CMD中打印出来。

4、在编写完成后,在Notepad++界面下按下F5,d出输入框。

5、cmd /k gcc -o "$(CURRENT_DIRECTORY)\$(NAME_PART)exe""$(FULL_CURRENT_PATH)" && CLS && "$(CURRENT_DIRECTORY)\$(NAME_PART)exe" & PAUSE & EXIT。在输入框例输入后运行。

6、点击运行,会d出CMD,在里面输入年份后回车就完成了。

#include <stdioh>

#include <timeh>

int main()

{

 time_t rawtime;

 struct tm timeinfo;

 time ( &rawtime );

 timeinfo = localtime ( &rawtime );

 int year,month,day,hour,min,sec;

 year = 1900+timeinfo->tm_year;

 month = 1+timeinfo->tm_mon;

 day = timeinfo->tm_mday;

 hour = timeinfo->tm_hour;

 min = timeinfo->tm_min;

 sec = timeinfo->tm_sec;

 printf ( "当前时间:%4d-%02d-%02d %02d:%02d:%02d\n\n",year, month,day,hour,min,sec);

 printf ( "你需要的格式:%4d%02d%02d%02d%02d%02d\n\n",year, month,day,hour,min,sec);

char hyy[2],lyy[2],MM[2],dd[2],hh[2],mm[2],ss[2];

 sprintf(hyy,"%02X",year/100);

 sprintf(lyy,"%02X",year%100);

 sprintf(MM,"%02X",month);

 sprintf(dd,"%02X",day);

 sprintf(hh,"%02X",hour);

 sprintf(mm,"%02X",min);

 sprintf(ss,"%02X",sec);

printf("转化为16进制:%02s%02s%02s%02s%02s%02s%02s\n",hyy,lyy,MM,dd,hh,mm,ss);

 //exit(0);

 return 0;

}

说明:我用VC60现写的,运行结果截图如下:

需要利用C语言的时间函数time和localtime,具体说明如下:

一、函数接口介绍:

1、time函数。

形式为time_t time (time_t __timer);

其中time_t为timeh定义的结构体,一般为长整型。

这个函数会获取当前时间,并返回。 如果参数__timer非空,会存储相同值到__timer指向的内存中。

time函数返回的为unix时间戳,即从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。

由于是秒作为单位的,所以这并不是习惯上的时间,要转为习惯上的年月日时间形式就需要另外一个函数了。

2、localtime函数。

形式为struct tm localtime (const time_t __timer);

其中tm为一个结构体,包含了年月日时分秒等信息。

这种结构是适合用来输出的。

二、参考代码:

#include <stdioh>

#include <timeh>

int main ()

{

    time_t t;

    struct tm  lt;

    time (&t);//获取Unix时间戳。

    lt = localtime (&t);//转为时间结构。

    printf ( "%d/%d/%d %d:%d:%d\n",lt->tm_year+1900, lt->tm_mon, lt->tm_mday, lt->tm_hour, lt->tm_min, lt->tm_sec);//输出结果

    return 0;

}

注意事项:

struct tm中的tm_year 值为实际年减去1900, 所以输出的时候要是lt->tm_year+1900。

1使用CTime类(获取系统当前时间,精确到秒)

CString str;

//获取系统时间

CTime tm;

tm=CTime::GetCurrentTime();//获取系统日期

str=tmFormat("现在时间是%Y年%m月%d日 %X");

MessageBox(str,NULL,MB_OK);

a,从CTimet中提取年月日时分秒

 CTime t = CTime::GetCurrentTime();

int d=tGetDay(); //获得几号

int y=tGetYear(); //获取年份

int m=tGetMonth(); //获取当前月份

int h=tGetHour(); //获取当前为几时

int mm=tGetMinute(); //获取分钟

int s=tGetSecond(); //获取秒

int w=tGetDayOfWeek(); //获取星期几,注意1为星期天,7为星期六

b,计算两段时间的差值,可以使用CTimeSpan类,具体使用方法如下:

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

CTime t = CTime::GetCurrentTime();

CTimeSpan span=t-t1; //计算当前系统时间与时间t1的间隔

int iDay=spanGetDays(); //获取这段时间间隔共有多少天

int iHour=spanGetTotalHours(); //获取总共有多少小时

int iMin=spanGetTotalMinutes();//获取总共有多少分钟

int iSec=spanGetTotalSeconds();//获取总共有多少秒

c,获得当前日期和时间,并可以转化为CString

CTime tm=CTime::GetCurrentTime(); CString str=tmFormat("%Y-%m-%d");//显示年月日

2使用GetLocalTime:Windows API 函数,获取当地的当前系统日期和时间 (精确到毫秒)

此函数会把获取的系统时间信息存储到SYSTEMTIME结构体里边

typedef struct _SYSTEMTIME

{

WORD wYear;//年

WORD wMonth;//月

WORD wDayOfWeek;//星期:0为星期日,1为星期一,2为星期二……

WORD wDay;//日

WORD wHour;//时

WORD wMinute;//分

WORD wSecond;//秒

WORD wMilliseconds;//毫秒

}SYSTEMTIME,PSYSTEMTIME;

以上就是关于C语言如何获取本地时间,然后取时、分、秒的值全部的内容,包括:C语言如何获取本地时间,然后取时、分、秒的值、c语言编写 万年历系统的程序中怎么计算本月一日是星期几、获取本月、本季、本年第一天和最后一天等等sql(sql server)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/10051218.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-04
下一篇2023-05-04

发表评论

登录后才能评论

评论列表(0条)

    保存