`
dazhilao
  • 浏览: 245807 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

【转】c语言时间转换,字符串转秒或时间结构体

 
阅读更多
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define IN 
#define OUT
//比较周数,成功返回0-6的数,错误返回7
//p代表周数,取周数前3个字母,如Mon代表周1,以此类推
//改动周几不影响返回的时间值,可以通过改动日期的日数来达到修改时间
int weekcmp( IN char *p)
{
        char week[8][4]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
        int i;
        

  for(i=0;i<7;i++)
        if(strcmp(p,week[i])==0)
                        break;
        
        if(i==7)
        {
                printf("fail to find week.\n");
                return i;
        }
                return i;
}
//比较月份,成功返回0-11的数,错误返回12
//P 为月份的前三个字母,如Feb代表二月,以此类推
int monthcmp( IN char *p)
{
        char month[13][4]={"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
        
        int i;
        for(i=0;i<12;i++)
                if(strcmp(p,month[i])==0)
                        break;
        if(i==12)
        {
                printf("fail to find month.\n");
                return i;
        }
        return i;
}
//将字串格式的时间转换为结构体,返回距离1970年1月1日0:0:0的秒数,当字符串格式错误或超值时返回0
//BUF 为类似Tue May 15 14:46:02 2007格式的,p为时间结构体
time_t timeconvert(IN char *buf,OUT struct tm *p)
{

        char cweek[4];
        char cmonth[4];
        time_t second;

        sscanf(buf,"%s %s %d %d:%d:%d %d",cweek,cmonth,&(p->tm_mday),&(p->tm_hour),&(p->tm_min),&(p->tm_sec),&(p->tm_year));
        p->tm_year-=1900;
        printf("****%s,%s*****\n",cweek,cmonth);
        p->tm_mon=monthcmp(cmonth);
        //改动周几不影响返回的时间值,可以通过改动日期的日数来达到修改时间
        p->tm_wday=weekcmp(cweek);
        if(p->tm_mon==12&&p->tm_wday==7)
        {
                printf("monthcmp() or weekcmp() fail to use.\n");
                return 0;
        }
        return second=mktime(p);
}

int main()
{
        long second;
        char buf[]="Fri Jan 16 15:46:02 2007";
		struct tm time1;
        second = timeconvert(buf,&time1);
		printf("year:%d, month:%02d, day:%02d\n",time1.tm_year+1900,time1.tm_mon+1,time1.tm_mday);
        printf("second=%d\n",second);
        return 0;
}
分享到:
评论

相关推荐

    C语言实现的 json格式字符串与结构体自动相互转化

    反之,将结构体转化为JSON字符串则是将结构体中的数据转换为JSON格式的文本,便于在网络间传递或存储。 关于“反射”这一概念,在许多面向对象的语言中,反射允许程序在运行时检查和修改其自身的结构和行为。在...

    C实现的 json格式字符串与结构体转化

    `cjson`库提供了`cJSON_CreateObject()`创建JSON对象,`cJSON_AddItemToObject()`添加键值对,以及`cJSON_PrintUnformatted()`或`cJSON_Print()`生成JSON格式的字符串。通过这些函数,我们可以根据结构体的定义,...

    html转C语言字串或数组工具

    不过,需要注意的是,因为C语言的内存管理是手动的,所以在使用转换得到的字符串或数组时,必须正确地管理内存,避免内存泄漏或越界访问。 总的来说,"html转C语言字串或数组工具"是一个强大的辅助工具,它简化了...

    利用串口传输结构体数据

    结构体是一种数据的归类方式,相比数组或变量更具有整体全面性,例如一个数组只可以放一些按照元素顺序存放的单元变量,即 buffer = {x, x, x, x, x…},i 有多大,数组内元素就有多少。那么我们这时候如果我们用这...

    C语言json字符串的生成与解析

    在C语言中,处理JSON字符串涉及到解析JSON文本为数据结构,以及将数据结构转换为JSON字符串。以下是对C语言中JSON字符串生成与解析的详细说明: 1. JSON数据格式: JSON是一种基于文本的格式,它使用键值对来表示...

    时间函数的转换C语言.zip_populare2e_时间 C语言 time_时间函数_时间转换

    4. **`ctime()`和`asctime()`函数**:这两个函数可以将`time_t`类型的时间转换为人类可读的字符串。`ctime()`函数会自动加上换行符,而`asctime()`则不会。例如: ```c char *str = ctime(&now); ``` 这会将`now...

    c语言时间戳与时间互转,适用于嵌入式平台。.zip

    要将结构化时间转换为易读的字符串,可以使用`strftime()`函数。这个函数允许你自定义输出的日期和时间格式。例如: ```c char buffer[80]; strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", local_time...

    UNIX转换阳历C语言源代码

    在C语言中,处理时间通常涉及使用`&lt;time.h&gt;`头文件中的函数,如`time()`用于获取当前的UNIX时间戳,以及`gmtime()`和`localtime()`用于将时间戳转换为结构体`struct tm`,该结构体包含了年、月、日、时、分、秒等...

    C语言 结构体和指针详解及简单示例

    这个结构体`stu`包含了学生的姓名(字符串指针)、学号(整型)、年龄(整型)、所在小组(字符)和成绩(浮点型)。我们可以创建结构体变量,如`stu1`,并初始化它的各个成员: ```c struct stu stu1 = { "Tom", ...

    图片批量转换为C语言数组

    然后,脚本可以将获取到的像素数据转换为C语言风格的字符串,包括定义数组的头文件、数组声明以及数据填充部分。 例如,对于一个8位灰度图像,每像素1字节,C语言数组可能如下所示: ```c const unsigned char ...

    解析unicode的json字符串的cJSON,支持宽字符串

    首先,你需要理解CJSON的基本使用方法,例如`cJSON_Parse()`函数用于解析JSON字符串,返回一个`cJSON`结构体指针,而`cJSON_Print()`或`cJSON_PrintUnformatted()`则用于将`cJSON`结构体转化为JSON字符串。...

    大小端转换(C++)

    提供一个大小端转换的类,可以转换short int float double类型,提供一个大小端转换的类,可以转换short int float double类型,提供一个大小端转换的类,可以转换short int float double类型

    基于C语言的时间戳相互转换日期.rar

    在C语言中,`localtime()`或`gmtime()`函数可以将时间戳转换为`struct tm`结构体,然后再用`strftime()`函数将`struct tm`转换为字符串形式的日期。 `UnixTime.h`中的结构体可能如下所示: ```c typedef struct { ...

    时间转换.zip

    1. **字符串处理算法**:解析和构建时间字符串,可能需要使用到字符串查找、分割、比较等操作。 2. **日期和时间操作**:可能需要理解日期时间库(如C语言中的`&lt;ctime&gt;`),并熟练使用`struct tm`等结构体进行日期...

    将字符串转为二元组(编译原理)

    字符串是由字符组成的序列,在C语言中,通常用双引号括起来。它们是程序中存储文本信息的基本数据类型。二元组,又称作配对或元组,是一个有序的数据结构,包含两个元素。在C语言中,二元组可以由结构体来实现,...

    C语言时间函数.pdf

    strftime()函数用于格式化tm结构体,可以根据提供的格式字符串,将tm结构体中的时间信息转换成自定义的字符串输出。这个函数非常强大,可以指定几乎任意的时间格式。 8. 结构体tm的成员 如文档所示,tm结构体中每个...

    C语言中将日期和时间以字符串格式输出的方法

    总结起来,C语言中处理日期和时间主要依赖ctime()和asctime()函数,它们能够将时间戳转换为人类可读的日期和时间字符串。ctime()直接接收时间戳,而asctime()则需要先将时间戳转换为`struct tm`结构。理解并正确使用...

    C语言中的时间函数

    3. **`strftime()`**:根据指定格式化字符串将`struct tm`结构体中的时间转换成字符数组中的字符串。 ```c size_t strftime(char *s, size_t maxsize, const char *format, const struct tm *timeptr); ``` - ...

    C语言中时间戳转换成时间字符串的方法

    要将这样的时间戳转换为人类可读的日期和时间字符串,我们可以使用标准库中的几个函数。在PE(Portable Executable)文件格式中,存在一个字段称为`TimeDateStamp`,它记录了文件的创建时间戳。以下是一个将此时间戳...

Global site tag (gtag.js) - Google Analytics