服务器版本Ubuntu 9.3.0
基于Linux C编程
1 获取当前时间并转化为字符串
引用头文件
#include <stdio.h>
#include <time.h>
#include <string.h>
2 获取当前时间戳
time_t t =time((time_t *) 0); ; // 时间戳,可以用time(&mytime);获取当前时间戳
3 转换时间格式
struct tm* timeP;
timeP = localtime(&t); // 转换
4 将时间转换为字符串,需要用到函数itoa
void itoa(int n, char ss[])
{//整数型转字符串函数
int i = 0, j, sign;
char s[50]={0};
//记录符号
if ((sign = n) < 0)
{
//使n成为正数
n = -n;
}
do
{
//取下一个数字
s[i++] = n % 10 + '0';
} while ((n /= 10) > 0);
//删除该数字
if (sign < 0)
{
s[i++] = '-';
}
s[i] = '\0';
#if 1
//生成的数字是逆序的,所以要逆序输出
int cnt=0;
for (j = i-1; j >= 0; j--)
{
// printf("%c", s[j]);
ss[cnt++] = s[j];
}
#endif
}
5将转换的字符串拼接起来,年,月为例
/* 定义字符串数组 */
char str[80];
char S_year[5]={0};//定义年
char S_mon[3]={0};//定义月
itoa(1900+ timeP->tm_year,S_year);//年无需处理
if(1+ timeP->tm_mon<10)//月份小于10则再前面加0输出
{
itoa(1+ timeP->tm_mon,&S_mon[1]);
S_mon[0]=0x30;
}else{
itoa(1+ timeP->tm_mon,S_mon);//月份大于10直接输出
}
strcpy (str,S_year);//拼接字符串
strcat (str,"/");
strcat (str,S_mon);
6其余需转换字符串
char S_day[3]={0};
char S_hour[3]={0};
char S_min[3]={0};
char S_sec[3]={0};
if(timeP->tm_mday<10)
{
itoa(timeP->tm_mday,&S_day[1]);
S_day[0]=0x30;
}else{
itoa(timeP->tm_mday,S_day);
}
if(timeP->tm_hour<10)
{
itoa(timeP->tm_hour,&S_hour[1]);
S_hour[0]=0x30;
}else{
itoa(timeP->tm_hour,S_hour);
}
if(timeP->tm_min<10)
{
itoa(timeP->tm_min,&S_min[1]);
S_min[0]=0x30;
}else{
itoa(timeP->tm_min,S_min);
}
if(timeP->tm_sec<10)
{
itoa(timeP->tm_sec,&S_sec[1]);
S_sec[0]=0x30;
}else{
itoa(timeP->tm_sec,S_sec);
}
strcat (str,S_mon);
strcat (str,"/");
strcat (str,S_day);
strcat (str," ");
strcat (str,S_hour);
strcat (str,":");
strcat (str,S_min);
strcat (str,":");
strcat (str,S_sec);
7封装函数
#include <stdio.h>
#include <time.h>
#include <string.h>
void itoa(int n, char ss[]);
void time_get(char str[]);
int main(int t, char s[])
{
char sss[80];
time_get(sss);
puts(sss);
}
void time_get(char str[])
{
time_t t = time((time_t *)0);
; // 时间戳,可以用time(&mytime);获取当前时间戳
struct tm *timeP;
timeP = localtime(&t); // 转换
/* 定义字符串数组 */
// char str[80];
char S_year[5] = {0}; // 定义年
char S_mon[3] = {0}; // 定义月
char S_day[3] = {0};
char S_hour[3] = {0};
char S_min[3] = {0};
char S_sec[3] = {0};
itoa(1900 + timeP->tm_year, S_year); // 年无需处理
if (1 + timeP->tm_mon < 10) // 月份小于10则再前面加0输出
{
itoa(1 + timeP->tm_mon, &S_mon[1]