LINUX系统实现时间服务器(可返回当前时间)

服务器版本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]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值