Linux c 로 컬 시간 가 져 오기 및 설정 방법

time 함수 설명 은 터미널 man time 에 있 습 니 다.
직접 코드
나 랑 똑 같은 풋내기 가 어 울 려.
 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include "app.h"


extern unsigned char recvMAC[6];
extern unsigned char localTime[7];
extern unsigned char localMAC[6];
extern unsigned char fw_version[12];
extern unsigned char sensorlist_version[12];
/*   struct tm
   {
      int tm_sec;   //  
      int tm_min;   //   
      int tm_hour;  //   
      int tm_mday;  //     
      int tm_mon;   //     
      int tm_year;  //tm_year+1900=   
      int tm_wday;  //     
      int tm_yday;  //     
      int tm_isdst; //      
   }
 */  
int getLocalTime(void)
{
	int i;
	unsigned short year;
	//unsigned short yearH;
	//unsigned short yearL;
	struct tm *local;
	time_t t;
	t = time(0);   //      
	local = localtime(&t);  //            ,    struct tm   
	printf("local time is %d:%d:%d:%d:%d:%d
",1900+local->tm_year, 1+local->tm_mon, local->tm_mday, local->tm_hour, local->tm_min, local->tm_sec); year=1900+local->tm_year; localTime[0]=year>>8; localTime[1]=year&0x00ff; localTime[2]=1+local->tm_mon; localTime[3]=local->tm_mday; localTime[4]=local->tm_hour; localTime[5]= local->tm_min; localTime[6]= local->tm_sec; for(i=0;i<7;i++) printf("0x%02x
",localTime[i]); printf("
"); return 0; } /************************************************ :*dt "2015-9-20 20:30:30" : char *pt="2015-9-20 20:30:30"; setLocalTime(dt); **************************************************/ int setLocalTime(char *dt) { struct rtc_time tm; struct tm _tm; struct timeval tv; time_t timep; sscanf(dt, "%d-%d-%d %d:%d:%d", &tm.tm_year, &tm.tm_mon, &tm.tm_mday,&tm.tm_hour, &tm.tm_min, &tm.tm_sec); _tm.tm_sec = tm.tm_sec; _tm.tm_min = tm.tm_min; _tm.tm_hour = tm.tm_hour; _tm.tm_mday = tm.tm_mday; _tm.tm_mon = tm.tm_mon - 1; _tm.tm_year = tm.tm_year - 1900; timep = mktime(&_tm); tv.tv_sec = timep; tv.tv_usec = 0; if(settimeofday (&tv, (struct timezone *) 0) < 0) { printf("Set system datatime error!/n"); return -1; } return 0; }

이 설정 이 완료 되면 실제 적 으로 바 텀 변수의 값 만 바 꾸 고 데 이 터 를 RTC 레지스터 에 기록 하지 않 으 며 시스템 을 다시 시작 하면 효력 을 잃 습 니 다. RTC 에 기록 하려 면 실행 해 야 합 니 다.
system("hwclock  -w");

 
도움 이 됐 으 면 좋 겠 어 요. 

좋은 웹페이지 즐겨찾기