time.h
을 통해 얻은 gmtime
에 시간과 분을 추가하는 미리 정의 된 방법이 있습니까? 다양한 국가의 시간을 표시하는 프로그램을 작성하고 싶습니다. 따라서 논리를 직접 작성해야합니까? 아니면 미리 정의 된 방법이 있습니까?gmtime에시와 분을 쉽게 추가하는 방법
답변
필요한 작업을 수행하는 표준화 된 기능이 없습니다. 그러나 struct tm
을 수정하면 비교적 간단하게 처리 할 수 있습니다. struct는 여러 멤버를 보유합니다. 하나는 몇 시간 동안, 하나는 분당 하나. 구조체의 멤버를 업데이트하면 값을 정규화하기 위해 mktime
을 호출해야합니다.
예를 들어 분이 이미 55로 설정되어 있고 10을 추가하면 65로 설정됩니다. mktime
을 호출하면 분이 5로 설정되고 이에 따라 다른 구성원이 업데이트됩니다. 같을 것이다 십분를 추가하는 예를 들어
: 당신이 시간대 이름이있는 경우
struct tm *t = ...
t->tm_min += 10;
mktime(t);
는 (같은 Europe/Helsinki
또는 US/Eastern
또는 MST
)는 아주 쉬운 POSIX 인터페이스가있다.
전체 프로세스의 표준 시간대가 적용되므로 스레드를 사용하는 경우 동일한 표준 시간대를 사용하지 않는 한 동시 날짜/시간 액세스를 피하기 위해 날짜/시간 함수를 래핑해야합니다. 뮤텍스. 여기에 표시된 예제는 예제를 더 쉽게 이해할 수 있도록 스레드로부터 안전하지 않습니다.
먼저 환경 변수 TZ
을 콜론으로 시작하는 표준 시간대 이름으로 설정하십시오. 이것은 POSIX 시스템에서 개별 프로세스의 시간대를 설정하는 데 사용되는 방법이며 프로세스의 모든 스레드에 영향을줍니다. 예 :
setenv("TZ", ":Europe/Helsinki", 1);
은 헬싱키 표준 시간대를 설정합니다. 자세한 내용은 man 3 setenv
을 참조하십시오. 그것만으로는 충분하지 않습니다. 당신은 또한 당신은 다음 글로벌 (Europe
를 포함한다) 변수 tzname[0]
및 tzname[1]
을 (Helsinki
를 포함해야 함) 실제로이었다 시간대 보려면 검사 할 수 있습니다
tzset();
를 호출하여, 현재의 시간대를 업데이트하는 C 라이브러리를 알려야합니다 세트. 자세한 내용은 man 3 timezone
을 참조하십시오. 예 : 대신 사용자 정의 시간대를 지정하려면 POSIX 시간대 정의 구문을 사용하십시오.
위의 두 줄 이후에 localtime()
또는 localtime_r()
을 사용할 때마다 선택한 시간대가 적용됩니다. 그것은 쉽습니다.
당신은 또한 특정 로케일을 준수하기 위해 타임 스탬프의 서식을 변경하려면, 당신은
setlocale(LC_TIME, "fi_FI.utf8");
주를 통해 (fi_FI.utf8
에 말) 로케일을 설정할 수 있습니다 man 3 setlocale
맨 페이지로 로케일은 정식 형식이어야하며, fi
과 같은 짧은 형식은 작동하지 않습니다. 다음에,점 buffer
에서
time_t now_time;
struct tm *now_tm;
char *format;
char buffer[256];
size_t length;
time(&now_time);
now_tm = localtime(&now_time);
if (!now_tm) {
/* Error, cannot get local time corresponding to now_time! */
return -1;
}
format = nl_langinfo(D_T_FMT);
if (!format || !*format) {
/* Error, cannot get date-time formatting string for this locale */
return -1;
}
/* Note: both now_tm and format point to static buffers,
* and they will be overwritten by subsequent calls.
*/
length = strftime(buffer, sizeof buffer, format, now_tm);
if (length < 1 || length >= sizeof buffer) {
/* Error in locale configuration; cannot generate date-time string. */
return -1;
}
핀란드 시간대의 날짜와 시간 핀란드어 (또는 무엇이든 마지막 setlocale(LC_TIME, locale)
호출에 설정된 로케일), 포함 (또는 어떤 시간대는 마지막 setenv("TZ", ":Europe/Helsinki", 1); tzset();
전화에서 설정).
(최종 검사는 일부 매우 오래된 시스템과 호환되며 버퍼가 너무 작 으면 sizeof buffer
을 반환합니다. 최신 시스템에서는 버퍼가 충분히 클 때이를 반환하지만 256 바이트로 충분할 것으로 예상합니다.
POSIX 계열 시스템에서 로켈 (언어 및 형식)과 시간대가 완전히 별개이므로이 점을 지적하고 싶습니다.
- 1. php : 타임 스탬프에 분을 추가하는 방법
- 2. 단일 쿼리에 시간과 분을 추가하는 방법
- 3. 분을 줄이는 방법 그러나 PHP에서 시간을 추가하는 방법
- 4. 응용 프로그램 페이지에서 컨트롤을 쉽게 추가하는 방법
- 5. 파이썬에서 분을 확인하는 방법?
- 6. 분을 계산식으로 사용하는 방법
- 7. 하스켈 : Data.Time을 사용하여 현재 시간에 분을 추가하는 방법?
- 8. 쿼리를 사용하여 mysql에 여분의 5 분을 추가하는 방법
- 9. 자바에서 벡터에 포함 된 총 분에 시간과 분을 추가하는 방법
- 10. DateTimePicker에서 시간과 분을 표시하는 방법
- 11. 시간의 다음 분을 얻는 방법?
- 12. 하루에 모든 분을 얻는 방법?
- 13. 기본 시간과 분을 설정하는 방법
- 14. 필요할 때 쉽게 켜고 로그 오버 헤드없이 로그를 추가하는 방법?
- 15. Eclipse의 기존 데이터베이스 (.sql) 파일에 데이터를 쉽게 추가하는 방법
- 16. 레일 : 동적 일 또는 분을 추가하는 방법은 무엇입니까? 내 컨트롤러에서
- 17. react-native에서 Date()에 분을 추가하는 방법은 무엇입니까?
- 18. timedelta를 시간에 추가하는 방법
- 19. 잠들지 않고 PHP에서 5 분을 기다리는 방법
- 20. 두 시간 사이의 시간과 분을 계산하는 방법;
- 21. DateTime 데이터 형식에서만시와 분을 비교하는 방법
- 22. strtotime에서 직접 반올림 한 분을 얻는 방법
- 23. 파이썬에서 timedelta의 총 시간과 분을 얻는 방법
- 24. PHP에서시와 분을 정수와 십진수로 계산하는 방법
- 25. 시간 간격 30 분을 얻는 방법?
- 26. TestNG에서 테스트 간 X 분을 기다리는 방법
- 27. 현재 시간에 30 분을 더하는 방법
- 28. jquery에서 타임 스탬프 분을 얻는 방법
- 29. PHP는 분을 숫자로 변환합니다.
- 30. 몇 분을 계산합니다.
[zdump] (http://linux.die.net/man/8/zdump)와 (과) 유사합니까? (예 :'zdump US/Eastern') –