1. 程式人生 > >筆記:時間戳和日期相互轉換

筆記:時間戳和日期相互轉換

// tttt.cpp : Defines the entry point for the console application.
//


#include "stdafx.h"
#include <time.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void nowTime();//顯示當前時間
void nowTime2();
void enterTime(int a);//固定時間戳轉換日期格式
long getTick(char *str_time);//轉換成時間戳 
long getTick2(char *str_time);//轉換成時間戳 方法2




//方法2還是好用一點 ,方法1有瑕疵
int main(int argc, char* argv[])
{
char str_time[19];
printf("請輸入時間:");
gets(str_time);

//printf("%ld",getTick(str_time));
enterTime(getTick2(str_time));
nowTime();
return 0;
}


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);//從第5個數開始
    iD = atoi(str_time+8);//從第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;

return mktime(&stm);
}
long getTick2(char *str_time)
{
struct tm stm;
//time_t t;
memset(&stm,0,sizeof(stm));//結構體賦0值


sscanf(str_time,"%d-%d-%d %d:%d",&stm.tm_year,&stm.tm_mon,&stm.tm_mday,&stm.tm_hour,&stm.tm_min);
stm.tm_year-=1900;
stm.tm_mon-=1;
//t=mktime(&stm);
return mktime(&stm);
}
void enterTime(int a)
{
time_t t=a;
struct tm *lt;//tm結構體
lt=localtime(&t);//將時間戳轉換為本地時間
char nowtime[24];
memset(nowtime,0,sizeof(nowtime));//將陣列中24個數替換為0
strftime(nowtime,24,"%Y-%m-%d %H:%M",lt);
printf("\nnowtime:%s",nowtime);


}
void nowTime2()
{
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);//輸出結果
}
void nowTime()
{
time_t t=time(NULL);
struct tm *lt;
int ii=time(&t);//獲取時間戳
lt=localtime(&t);
char nowtime[24];
memset(nowtime,0,sizeof(nowtime));//將陣列中24個數替換為0
strftime(nowtime,24,"%Y-%m-%d %H:%M:%S",lt);
printf("\nnowtime:%s",nowtime);


}
/*
#include <time.h>
size_t strftime(char *str, size_t count, const char *format, const struct tm *tm);
str, 表示返回的時間字串
count, 要寫入的位元組的最大數量
format, 格式字串由零個或多個轉換符和普通字元(除%)
tm, 輸入時間
*/