2010-12-14 7 views

答えて

0

タイムゾーン情報を処理するPOSIX方法は、明らかに環境変数TZを設定することです。

/* Get actual time */ 
time(&now); 

/* Backup time zone */ 
old_tz = getenv("TZ"); 

/* Set user time zone */ 
setenv("TZ", zone_s, 1); 

/* Get time components in user timezone */ 
comptime = localtime(&now); 

/* Set time */ 
sscanf(time_string, "%d:%d", &x, &y)); 
comptime->tm_hour = x; 
comptime->tm_min = y; 
comptime->tm_sec = 0; 

/* Set date */ 
sscanf(date_string, "%d-%d-%d", &x, &y, &z); 
comptime->tm_year = x-1900; 
comptime->tm_mon = y-1; 
comptime->tm_mday = z; 

/* Restore time zone */ 
setenv("TZ", old_tz, 1); 

乾杯、

マーティン:したがって、私は、前の時間の関数での作業にユーザーが指定したタイムゾーンでTZを設定することにしました。

0

私が考えることができるのは、文字列をコピーし、UTCオフセットをゼロの1つに置き換え、両方の時間を解析してdifftime(...)との違いを取ることだけです。

おそらく巧妙なテクニックがありますが、今はコーヒーが足りません。

+0

唯一の問題は、時間差を取得するには、date_t time_tを持つ必要があることです。しかし、少なくともPOSIXではなく、UTCオフセットを使ってdatetime文字列を解析することはできません。 –

関連する問題