UTC time을 정의하고 싶은데 어떻게 하죠?

munhoney의 이미지

쉬운 내용일것 같은데,, 잘 모르겠네용 @@

제가 하고 싶은것은 C로 UTC time을 만들고 싶은겁니다.

즉,
struct tm t;

t.tm_year = 2011-1900;
t.tm_mon = 1;
.....

이렇게 만들면 기본적으로 로컬 타임으로 설정되지요
하지만 제가 원하는 것은 이거 자체가 UTC 타임이었으면 좋겠는데,, 어떻게 하지요?

처음 생각했던 것은
t.tm_zone = "UTC" 이거인데 안되는것 같고..

두번째는 무슨 설정해주는 뭔가 있을 거라고 생각했는데, 못찾겠고...

혹시 방법이 있나요?

doraq의 이미지

CTIME(3) Linux Programmer’s Manual CTIME(3)

NAME
asctime, ctime, gmtime, localtime, mktime, asctime_r, ctime_r, gmtime_r, localtime_r - transform date and time
to broken-down time or ASCII

SYNOPSIS
#include

char *asctime(const struct tm *tm);
char *asctime_r(const struct tm *tm, char *buf);

char *ctime(const time_t *timep);
char *ctime_r(const time_t *timep, char *buf);

struct tm *gmtime(const time_t *timep);
struct tm *gmtime_r(const time_t *timep, struct tm *result);

struct tm *localtime(const time_t *timep);
struct tm *localtime_r(const time_t *timep, struct tm *result);

time_t mktime(struct tm *tm);

munhoney의 이미지

네 리눅스 맞습니다.

네 그 부분을 보긴했는데
처음 제가 설정한 값이 UTC로 이해해주는 것은 없더군요. (제가 잘 몰라서 일수도 있지만. .. ㅡㅡ)

즉 localtime을 utc로 변환은 해줍니다.
그리고 제가 하고 싶은것은 struct tm 으로 인간이 쉽게 이해할 수 있는 값으로 가지고 있고, 그것 자체가 UTC이길 바랄뿐이지요..

---------------------------------
http://blog.naver.com/munhoney
---------------------------------

planetarium의 이미지

질문자가 뭔가 잘못 생각하시는것 같은데요,
struct tm은 결국 연월일 시분초를 저장하기 위한 자료구조일 뿐이죠. 거기에 UTC이 들어있는지 localtime이 들어있는지는 개발자가 판단하고 결정하면 되는것 아닌가요?
int가 int hour; 가 될수도 있고 int year; 가 될수도 있는 것처럼, struct tm utc_now; 가 될지 struct tm local_now; 가 될지는 자유롭잖아요.

munhoney의 이미지

네 맞습니다.
struct tm은 전혀 상관이 없지요 하지만, 그 정보를 time_t로 변환하고자 하면 localtime과 utc time 구분이 필요해집니다.

그래서 제가 원하는 것은 time_t로 변환할 시 utc time으로 변환되어진 값을 구하고자 하는 겁니다.

---------------------------------
http://blog.naver.com/munhoney
---------------------------------

ymir의 이미지

struct tm 에 GMT+0 의 시간을 넣는 건, 단순히 gmtime() 을 호출하면 되니까, 이건 아닌 것 같고..;;

localtime 이 들어간 struct tm 을 timestamp 로 변환했을 때, 이 timestamp 가 UTC 이길 원하시는 거라면..
이건 epoch timestamp 맞으니까 역시 아닌것 같고..

모든 시간 데이터를 UTC 기준으로 처리하시려는 거라면, 시스템을 UTC 로 설정하는 수 밖에 없을 듯 싶네요.
time() 이나 gettimeofday() 를 통해 얻어온 시스템 시간은 UTC 기준의 timestamp 이지만..
시간 변환 함수들은 내부적으로 모두 tzset() 을 호출해서, tzname 의 값을 참조를 합니다.
결과적으로 현재 timezone 을 기준으로 데이터를 처리하기 때문에..
이걸 바꾸지 않고서는 모두 localtime 기준으로 처리될 수 밖에 없을 것 같네요.

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.