
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)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)