time management

Jin·2022년 2월 27일
0

프로그램에서 time은 크게 calendar time과 Process/CPU time으로 나뉩니다.

1. Calendar time

  • UTC (Coordinated Universal Time) / GMT (Greenwich Mean Time): 세계 공통으로 기준이 되는 시간
  • Epoch time: 1970년 1월 1일 00시 00분 00초를 기점으로 하여 몇 초가 지났는지를 나타냄

2.Process/CPU time

  • 1 tick = 1 ms or 10 ms
  • time = 프로그램이 얼마나 실행되었는지를 쉘에서 보여주는 초 단위의 시간

time과 관련된 함수들을 소개해보겠습니다.

time_t time (time_t *tloc)

  • tloc: epoch time이 들어감

정상적인 경우 현재 epoch time이 반환되고 error시 -1이 반환됩니다.

int stime (const time_t *tp)

  • tp: set 할 epoch time

정상적인 경우 0이, error시 -1이 반환됩니다.

tm은 시간과 관련된 변수들이 저장되어 있는 구조체입니다. 이 구조체를 이용하여 시간과 관련된 여러 설정을 할 수 있습니다.

struct tm localtime (const time_t clock) // local time

  • clock: epoch time이 들어감

tm의 포인터가 반환됩니다

struct tm gmtime (const time_t clock) // GMT

  • clock: epoch time이 들어감

tm의 포인터가 반환됩니다.

epoch time을 넣고 tm 포인터가 반환되면 tm 안에 있는 변수들을 활용하여 tm->tm_yday 같이 년, 월, 일, 시, 분, 초 등을 출력할 수 있습니다.

time_t mktime (struct tm *timeptr)

  • timeptr: tm에 대한 포인터

정상적인 경우 epoch time이, error시 -1이 반환됩니다. tm 구조체를 epoch time으로 형식을 변환하는 기능입니다.

char ctime (const time_t clock)

  • clock: epoch time이 들어감
  • time string이 반환됨

char asctime (const struct tm tm)

  • tm: tm에 대한 포인터

time string이 반환됩니다.
ctime, asctime 모두 time string이 반환되지만 epoch time을 통해 반환하는가, tm을 통해 반환하는가의 차이입니다.

size_t strftime (char s, size_t maxsize, const char format, const struct tm *timeptr)

  • s: string buffer
  • maxsize: buffer size
  • format: conversion format
  • timeptr: tm pointer

정상적인 경우 s에 있는 문자의 개수가 반환되고 error시 0이 반환됩니다

strftime은 format에 %A, %d 등 다양한 형식을 지원합니다.

이런 식으로 하게 되면 반환 값이 6이 되고 str을 출력하면 Wednesday Jul 11 192 27 28이 됩니다.

profile
배워서 공유하기

0개의 댓글