求C语言 时间戳和标准格式的转换

seventynine 2011-12-31 12:00:27
int main(int argc, char **argv)
{
time_t t;
t = time(NULL);
struct tm *lt;
int ii = time(&t);
printf("ii = %d\n", ii);
t = time(NULL);
lt = localtime(&t);
char nowtime[24];
memset(nowtime, 0, sizeof(nowtime));
strftime(nowtime, 24, "%Y-%m-%d %H:%M:%S", lt);
printf("nowtime = %s\n", nowtime);
return 1;
}

打印:
ii = 1325302987
nowtime = 2011-12-31 11:43:07

现在我不想获得系统时间,只是想随便输入一个标准格式的时间 “2011-12-31 11:43:07”,不知能不能直接转换成时间戳 1325302987?
就是说 ,随便输入一个时间戳或者标准格式之间能不能相互转换?
...全文
1185 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
yafeng_jiang 2011-12-31
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 mscf 的回复:]

重贴一次
C/C++ code
// test.cpp : Defines the entry point for the console application.

#include <stdio.h>
#include <time.h>


int main(int argc, char* argv[])
{
struct tm lt;
time_t t;
cha……
[/Quote]

~~
薛定谔之死猫 2011-12-31
  • 打赏
  • 举报
回复
重贴一次
// test.cpp : Defines the entry point for the console application.

#include <stdio.h>
#include <time.h>


int main(int argc, char* argv[])
{
struct tm lt;
time_t t;
char *timestr = "2011-12-31 11:43:07";
sscanf(timestr,"%d-%d-%d %d:%d:%d",<.tm_year,<.tm_mon,<.tm_mday,<.tm_hour,<.tm_min,<.tm_sec);
lt.tm_year-=1900;
lt.tm_mon-=1;
t=mktime(<);
printf("%d",t);
return 0;
}

薛定谔之死猫 2011-12-31
  • 打赏
  • 举报
回复
哥的楼层被吃掉了
测试NULL 2011-12-31
  • 打赏
  • 举报
回复
抱歉, 最后一行printf的%d最好改成%ld,之前写错了, 另外改成传字符串参数也可以的

#include <stdio.h>
#include <time.h>
#include <string.h>
#include <stdlib.h>

long GetTick(char *str_time)
{
struct tm stm;
int iY, iM, iD, iH, iMin, iS;

memset(&stm,0,sizeof(stm));

iY = atoi(str_time);
iM = atoi(str_time+5);
iD = atoi(str_time+8);
iH = atoi(str_time+11);
iMin = atoi(str_time+14);
iS = atoi(str_time+17);

stm.tm_year=iY-1900;
stm.tm_mon=iM-1;
stm.tm_mday=iD;
stm.tm_hour=iH;
stm.tm_min=iMin;
stm.tm_sec=iS;

/*printf("%d-%0d-%0d %0d:%0d:%0d\n", iY, iM, iD, iH, iMin, iS);*/

return mktime(&stm);
}

int main()
{
char str_time[19];

printf("请输入时间:"); /*(格式:2011-12-31 11:43:07)*/

gets(str_time);

printf("%ld\n", GetTick(str_time));

return 0;
}
薛定谔之死猫 2011-12-31
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <time.h>

int main(int argc,char *argv[]){
struct tm lt;
time_t t;
char *timestr = "2011-12-31 11:43:07";
sscanf(timestr,"%d-%d-%d %d:%d:%d",<.tm_year,<.tm_mon,<.tm_mday,<.tm_hour,<.tm_min,<.tm_sec);
lt.tm_year-=1900;
lt.tm_mon-=1;
t=mktime(<);
printf("%d",t);
return 0;
}
seventynine 2011-12-31
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wangliangffaflgh 的回复:]

可以的, 这样写:
C/C++ code

#include <stdio.h>
#include <time.h>
#include <string.h>

long GetTick(int iY,int iM,int iD,int iH,int iMin,int iS)
{
struct tm stm;

memset(&stm,0,sizeof(stm)……
[/Quote]谢了‵‵‵能否找到能相互转换的方法‵‵‵我得来回折腾时间的格式···
测试NULL 2011-12-31
  • 打赏
  • 举报
回复
可以的, 这样写:

#include <stdio.h>
#include <time.h>
#include <string.h>

long GetTick(int iY,int iM,int iD,int iH,int iMin,int iS)
{
struct tm stm;

memset(&stm,0,sizeof(stm));

stm.tm_year=iY-1900;
stm.tm_mon=iM-1;
stm.tm_mday=iD;
stm.tm_hour=iH;
stm.tm_min=iMin;
stm.tm_sec=iS;

return mktime(&stm);
}

int main()
{
printf("%d\n", GetTick(2011,12,31,11,43,7));
return 0;
}
沭水河畔 2011-12-31
  • 打赏
  • 举报
回复
可以用mktime,另外了解一下gmtime和struct tm这个结构体。
赵4老师 2011-12-31
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 zhao4zhong1 的回复:]
引用 9 楼 seventynine 的回复:
那‵‵时间戳怎么换成标准格式的时间呢‵‵‵

参考1楼代码。(^_^)
[/Quote]
嘿嘿!这分得的容易啊。
seventynine 2011-12-31
  • 打赏
  • 举报
回复
搞定,多谢!
赵4老师 2011-12-31
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 seventynine 的回复:]
那‵‵时间戳怎么换成标准格式的时间呢‵‵‵
[/Quote]
参考1楼代码。(^_^)
yafeng_jiang 2011-12-31
  • 打赏
  • 举报
回复
localtime
gmtime
这两个函数
seventynine 2011-12-31
  • 打赏
  • 举报
回复
那‵‵时间戳怎么换成标准格式的时间呢‵‵‵

69,739

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧