- 1 1. ã¯ããã«
- 2 2. Cèšèªã§æéãæ±ãããã®åºæ¬ç¥è
- 3 3. çŸåšæå»ãååŸããæ¹æ³
- 4 4. æå»ã®ãã©ãŒããã: strftime()ã®æŽ»çš
- 5 5. æå»ã®å ç®ã»æžç®
- 6 6. 2038幎åé¡ã«åãã
- 7 7. å®è·µçãªãŠãŒã¹ã±ãŒã¹
- 8 8. ãããã質åïŒFAQïŒ
- 8.1 Q1. çŸåšæå»ãæ¥æ¬æéïŒJSTïŒã§ååŸããæ¹æ³ã¯ïŒ
- 8.2 Q2. æå»ãããªç§åäœã§ååŸããããšã¯ã§ããŸããïŒ
- 8.3 Q3. 倿éïŒDSTïŒã«å¯Ÿå¿ããæ¹æ³ã¯ïŒ
- 8.4 Q4. strftime()ã§æ¥æ¬èªã®ææ¥ã衚瀺ã§ããŸããïŒ
- 8.5 Q5. 2038幎以éã®æå»ãæ£ããæ±ãæ¹æ³ã¯ïŒ
- 8.6 Q6. ããã°ã©ã ãæåŸ ããæå»ãåºåããªãå Žåã®åå ã¯ïŒ
- 8.7 ãŸãšã
- 9 9. ãŸãšã
1. ã¯ããã«
Cèšèªã¯ãã·ã¹ãã ããã°ã©ãã³ã°ãçµã¿èŸŒã¿ã·ã¹ãã ã§åºã䜿çšãããããã°ã©ãã³ã°èšèªã§ãããã®äžã§ããæéãæ±ããããšã¯å€ãã®ããã°ã©ã ã§éèŠãªèŠçŽ ãšãªããŸããããšãã°ãçŸåšæå»ã衚瀺ãããã°ã·ã¹ãã ããæå®ãããæéã«ç¹å®ã®åŠçãå®è¡ããã¿ã€ããŒæ©èœãªã©ãå€å²ã«ãããçšéã§æéåŠçãå¿ èŠã§ãã
æ¬èšäºã§ã¯ãCèšèªã§æéãæ±ãéã«äœ¿çšããæšæºã©ã€ãã©ãªãtime.hããäžå¿ã«è§£èª¬ããŸãããã®ã©ã€ãã©ãªã䜿ãã°ãã·ã¹ãã ã®çŸåšæå»ãååŸããããæå»ããã©ãŒãããããŠè¡šç€ºãããããããšãã§ããŸãããŸããå°æ¥çãªèª²é¡ãšããŠç¥ãããã2038幎åé¡ãã«ã€ããŠãè§ŠããæéåŠçãæ£ããå®è£ ããããã®åºç€ç¥èãåŠã¹ãŸãã
åå¿è ã®æ¹ã§ãçè§£ã§ããããã«ãåºç€çãªæŠå¿µããå®è·µçãªå¿çšäŸãŸã§é ã远ã£ãŠèª¬æããŠãããŸãããã®èšäºãèªãããšã§ã以äžã®å 容ãç¿åŸã§ããŸãïŒ
- Cèšèªã®æéåŠçã«å¿ èŠãªåºç€ç¥è
- çŸåšæå»ã®ååŸãšè¡šç€º
- æå»ã®ãã©ãŒããããæäœæ¹æ³
- æéã«é¢ãããããã課é¡ãšãã®è§£æ±ºæ¹æ³
ãããã®ç¥èãæŽ»çšããããšã§ããã°èšé²ãã¹ã±ãžã¥ãŒãªã³ã°ãã¿ã€ããŒãªã©ãããŸããŸãªå Žé¢ã§åœ¹ç«ã€æéåŠçãå®çŸã§ããã§ããããæ¬¡ã®ã»ã¯ã·ã§ã³ã§ã¯ãCèšèªã§æéãæ±ãéã«äœ¿çšããåºæ¬çãªããŒã¿åã颿°ã«ã€ããŠè©³ããèŠãŠãããŸãã
2. Cèšèªã§æéãæ±ãããã®åºæ¬ç¥è
Cèšèªã§æéãæ±ãã«ã¯ãæšæºã©ã€ãã©ãªã«å«ãŸãããtime.hãã䜿çšããŸãããã®ããããã¡ã€ã«ã¯ãã·ã¹ãã ã®æéãååŸã»æäœããããã®ããŒã¿åã颿°ãæäŸããŸããããã§ã¯ãæéåŠçã«å¿ èŠãªåºæ¬ç¥èã詳ãã解説ããŸãã
time.hãšã¯ïŒ
time.h
ã¯ãCèšèªã«ãããæéåŠçããµããŒãããæšæºã©ã€ãã©ãªã§ãããã®ã©ã€ãã©ãªã䜿çšãããšãçŸåšã®ã·ã¹ãã æå»ã®ååŸããæéããŒã¿ã®ãã©ãŒããããå ç®ã»æžç®ãªã©ãå¹
åºãæéé¢é£ã®åŠçãç°¡åã«å®è£
ã§ããŸãã
äž»ã«äœ¿çšãããããŒã¿åãšé¢æ°ã«ã¯ä»¥äžã®ãããªãã®ããããŸãïŒ
- ããŒã¿å:
time_t
ãstruct tm
- 颿°:
time()
ãlocaltime()
ãstrftime()
ãªã©
æéåŠçã§äœ¿çšãããäž»ãªããŒã¿å
Cèšèªã§æéãæ±ãããã«ã¯ã以äžã®ããŒã¿åãçè§£ããå¿ èŠããããŸãã
1. time_t
time_t
ã¯ãã·ã¹ãã æå»ã衚çŸããããã®ããŒã¿åã§ãããã®åã¯ã1970幎1æ1æ¥0æ0å0ç§ïŒUnixãšããã¯ïŒããã®çµéç§æ°ãä¿æããŸããããã°ã©ã ã§çŸåšæå»ãååŸããéã«ãæåã«äœ¿çšããåºæ¬çãªåã§ãã
䜿çšäŸ
#include <stdio.h>
#include <time.h>
int main() {
time_t now = time(NULL); // çŸåšæå»ãååŸ
printf("çŸåšæå»ïŒç§æ°ïŒïŒ%ld
", now);
return 0;
}
ãã®ã³ãŒãã¯ãçŸåšã®ã·ã¹ãã æå»ãç§æ°ãšããŠè¡šç€ºããŸãã
2. struct tm
struct tm
ã¯ãæå»ããã詳现ã«è¡šçŸããããã®æ§é äœã§ãããã®æ§é äœã¯ã幎ãæãæ¥ãæãåãç§ãšãã£ãæ
å ±ãæ ŒçŽããŸãã
æ§é äœã¡ã³ããŒ
struct tm
ã«ã¯ä»¥äžã®ã¡ã³ããŒãå«ãŸããŠããŸãïŒ
tm_sec
ïŒç§ïŒ0â60ïŒtm_min
ïŒåïŒ0â59ïŒtm_hour
ïŒæïŒ0â23ïŒtm_mday
ïŒæã®æ¥ïŒ1â31ïŒtm_mon
ïŒæïŒ0â11ã0ã1æïŒtm_year
ïŒ1900幎ããã®çµé幎æ°tm_wday
ïŒææ¥ïŒ0â6ã0ãæ¥ææ¥ïŒtm_yday
ïŒå¹Žå ã®æ¥æ°ïŒ0â365ïŒtm_isdst
ïŒå€æéïŒ1=é©çšäžã0=éé©çšã-1=æ å ±ãªãïŒ
䜿çšäŸ
#include <stdio.h>
#include <time.h>
int main() {
time_t now = time(NULL);
struct tm *local = localtime(&now); // ããŒã«ã«æéã«å€æ
printf("çŸåšã®æ¥æ: %d-%02d-%02d %02d:%02d:%02d
",
local->tm_year + 1900, // 幎ã¯1900幎ãåºæº
local->tm_mon + 1, // æã¯0ããå§ãŸã
local->tm_mday,
local->tm_hour,
local->tm_min,
local->tm_sec);
return 0;
}
ãã®ã³ãŒãã¯ãçŸåšã®æ¥æããYYYY-MM-DD HH:MM:SSãã®åœ¢åŒã§è¡šç€ºããŸãã
æéèšæž¬ã§äœ¿çšããããã®ä»ã®ããŒã¿å
1. clock_t
clock_t
ã¯ãããã»ã¹ã®å®è¡æéãæž¬å®ããããã®ããŒã¿åã§ããclock()
颿°ãšçµã¿åãããŠäœ¿çšããããšã§ãã³ãŒãã®å®è¡æéãèšæž¬ã§ããŸãã
䜿çšäŸ
#include <stdio.h>
#include <time.h>
int main() {
clock_t start, end;
double cpu_time_used;
start = clock();
// èšæž¬å¯Ÿè±¡ã®ã³ãŒã
for (volatile long i = 0; i < 100000000; i++);
end = clock();
cpu_time_used = ((double)(end - start)) / CLOCKS_PER_SEC;
printf("åŠçæé: %f ç§
", cpu_time_used);
return 0;
}
ãã®ã³ãŒãã¯ãæå®ãããã«ãŒãåŠçã«ãããå®è¡æéãèšæž¬ããŸãã
ããŒã¿åã®ãŸãšã
以äžã«ãæéåŠçã§äœ¿çšããäž»ãªããŒã¿åã衚圢åŒã§æŽçããŸãã
ããŒã¿å | 説æ | äž»ãªçšé |
---|---|---|
time_t | ã·ã¹ãã æå»ãä¿æïŒçµéç§æ°ïŒ | çŸåšæå»ã®ååŸ |
struct tm | å¹Žææ¥æåç§ãªã©ã®è©³çŽ°ãªæéæ å ±ãä¿æ | æå»ã®ãã©ãŒããããæäœ |
clock_t | ããã»ã¹ã®å®è¡æéãä¿æ | å®è¡æéã®èšæž¬ |
3. çŸåšæå»ãååŸããæ¹æ³
Cèšèªã§çŸåšæå»ãååŸããéã«ã¯ãtime.h
ããããã¡ã€ã«ãæäŸããtime()
颿°ã䜿çšããŸãããã®ã»ã¯ã·ã§ã³ã§ã¯ãåºæ¬çãªäœ¿ãæ¹ããããŒã«ã«æéãUTCæéãžã®å€æãŸã§ã解説ããŸãã
çŸåšæå»ãååŸããåºæ¬
time()颿°
time()
颿°ã¯ãçŸåšã®ã·ã¹ãã æå»ãtime_t
åã§è¿ããŸãããã®é¢æ°ã¯éåžžã«ã·ã³ãã«ã§ãåŒæ°ã«NULL
ãæå®ããã ãã§çŸåšæå»ãååŸã§ããŸãã
䜿çšäŸ
#include <stdio.h>
#include <time.h>
int main() {
time_t now = time(NULL); // çŸåšæå»ãååŸ
printf("çŸåšæå»ïŒç§æ°ïŒïŒ%ld
", now);
return 0;
}
åºåäŸ
çŸåšæå»ïŒç§æ°ïŒïŒ1700000000
æå»ã人éãèªã¿ããã圢åŒã«å€æãã
ããŒã«ã«æéãžã®å€æ: localtime()
localtime()
颿°ã䜿çšãããšãååŸããtime_t
åã®å€ãããŒã«ã«æéã«åºã¥ããstruct tm
æ§é äœã«å€æã§ããŸãã
䜿çšäŸ
#include <stdio.h>
#include <time.h>
int main() {
time_t now = time(NULL); // çŸåšæå»ãååŸ
struct tm *local = localtime(&now); // ããŒã«ã«æéã«å€æ
printf("çŸåšã®ããŒã«ã«æé: %d-%02d-%02d %02d:%02d:%02d
",
local->tm_year + 1900, // 幎ã¯1900幎ãåºæº
local->tm_mon + 1, // æã¯0ããå§ãŸã
local->tm_mday,
local->tm_hour,
local->tm_min,
local->tm_sec);
return 0;
}
åºåäŸ
çŸåšã®ããŒã«ã«æé: 2025-01-12 15:30:45
UTCæéãžã®å€æ: gmtime()
gmtime()
颿°ã¯ãtime_t
åã®å€ãåå®äžçæïŒUTCïŒã«åºã¥ããstruct tm
æ§é äœã«å€æããŸãã
䜿çšäŸ
#include <stdio.h>
#include <time.h>
int main() {
time_t now = time(NULL); // çŸåšæå»ãååŸ
struct tm *utc = gmtime(&now); // UTCæéã«å€æ
printf("çŸåšã®UTCæé: %d-%02d-%02d %02d:%02d:%02d
",
utc->tm_year + 1900,
utc->tm_mon + 1,
utc->tm_mday,
utc->tm_hour,
utc->tm_min,
utc->tm_sec);
return 0;
}
åºåäŸ
çŸåšã®UTCæé: 2025-01-12 06:30:45
UTCãšããŒã«ã«æéã®éã
- UTCïŒåå®äžçæïŒ
äžçæšæºã®æå»ã§ããããã¹ãŠã®ã¿ã€ã ãŸãŒã³ã®åºæºãšãªããŸãã - ããŒã«ã«æé
ã·ã¹ãã ã®ã¿ã€ã ãŸãŒã³èšå®ã«åºã¥ããŠèª¿æŽãããæå»ã§ãã
ããšãã°ãæ¥æ¬æšæºæïŒJSTïŒã¯UTC+9æéã§ãããã®ãããlocaltime()
ãšgmtime()
ã®åºåã¯9æéã®å·®ããããŸãã
çŸåšæå»ãæåå圢åŒã§è¡šç€ºãã
ctime()颿°
ctime()
颿°ã¯ãtime_t
åã®å€ãçŽæ¥æåå圢åŒã§è¡šç€ºããããã®ç°¡æé¢æ°ã§ãã
䜿çšäŸ
#include <stdio.h>
#include <time.h>
int main() {
time_t now = time(NULL);
printf("çŸåšã®æå»: %s", ctime(&now)); // æå»ãæååãšããŠè¡šç€º
return 0;
}
åºåäŸ
çŸåšã®æå»: Sat Jan 12 15:30:45 2025
泚æç¹
- åºåã¯è±èªè¡šèšã§åºå®ãããŠããŸãã
- ããæè»ãªãã©ãŒããããå¿
èŠãªå Žåã¯
strftime()
ã䜿çšããŸãïŒæ¬¡ã®ã»ã¯ã·ã§ã³ã§è§£èª¬ïŒã
ãŸãšã
- çŸåšæå»ãååŸããã«ã¯
time()
颿°ã䜿çšã - ããŒã«ã«æéã«ã¯
localtime()
ãUTCæéã«ã¯gmtime()
ã䜿çšããŠå€æã - ç°¡æçã«æå»ãæååãšããŠè¡šç€ºãããå Žåã¯
ctime()
ã䜿çšã
4. æå»ã®ãã©ãŒããã: strftime()
ã®æŽ»çš
Cèšèªã§æå»ã人éãèªã¿ããã圢åŒã§è¡šç€ºãããå Žåãstrftime()
颿°ã䜿çšãããšæè»ã«ãã©ãŒããããæå®ã§ããŸãããã®é¢æ°ã¯ãå¹Žææ¥ãæåç§ã ãã§ãªããææ¥ã幎å
ã®æ¥æ°ïŒéç®æ¥ïŒãªã©ã®è©³çŽ°ãªæ
å ±ã衚瀺å¯èœã§ãã
ãã®ã»ã¯ã·ã§ã³ã§ã¯ãstrftime()
颿°ã®åºæ¬çãªäœ¿ãæ¹ã䟿å©ãªãã©ãŒãããäŸã玹ä»ããŸãã
strftime()颿°ãšã¯ïŒ
strftime()
颿°ã¯ãæå»ããŒã¿ããã©ãŒãããæå®ã«åŸã£ãŠæååã«å€æããããã®é¢æ°ã§ããstruct tm
æ§é äœãå
ã«ãæå®ããã圢åŒã§æ¥ä»ãæå»ãåºåããŸãã
颿°ãããã¿ã€ã
size_t strftime(char *s, size_t max, const char *format, const struct tm *tm);
s
ïŒãã©ãŒãããåŸã®æååãæ ŒçŽãããããã¡ãmax
ïŒãããã¡ã®æå€§ãµã€ãºãformat
ïŒãã©ãŒãããæå®åãtm
ïŒãã©ãŒããã察象ã®struct tm
æ§é äœã
æ»ãå€
倿åŸã®æååã®é·ãïŒãã€ãæ°ïŒããšã©ãŒãçºçããå Žåã¯0ãè¿ããŸãã
åºæ¬çãªäœ¿ãæ¹
以äžã¯ãçŸåšæå»ããYYYY-MM-DD HH:MM:SSãã®åœ¢åŒã§è¡šç€ºããäŸã§ãã
䜿çšäŸ
#include <stdio.h>
#include <time.h>
int main() {
time_t now = time(NULL); // çŸåšæå»ãååŸ
struct tm *local = localtime(&now); // ããŒã«ã«æéã«å€æ
char buffer[80]; // ãã©ãŒãããåŸã®æååãæ ŒçŽãããããã¡
strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", local);
printf("ãã©ãŒããããããæ¥æ: %s
", buffer);
return 0;
}
åºåäŸ
ãã©ãŒããããããæ¥æ: 2025-01-12 15:30:45
äž»ãªãã©ãŒãããæå®å
以äžã¯ããã䜿çšããããã©ãŒãããæå®åãšãã®èª¬æã§ãã
æå®å | 説æ | åºåäŸ |
---|---|---|
%Y | 西æŠå¹ŽïŒ4æ¡ïŒ | 2025 |
%m | æïŒ01-12ïŒ | 01 |
%d | æ¥ïŒ01-31ïŒ | 12 |
%H | æïŒ00-23ïŒ | 15 |
%M | åïŒ00-59ïŒ | 30 |
%S | ç§ïŒ00-60ïŒ | 45 |
%A | ææ¥ïŒè±èªïŒ | Saturday |
%a | ææ¥ïŒççž®åœ¢ïŒ | Sat |
%j | 幎å ã®éç®æ¥ïŒ001-366ïŒ | 012 |
%p | AMãŸãã¯PMïŒãã±ãŒã«äŸåïŒ | PM |
äŸ
- ãã©ãŒãããæå®ïŒ
"%A, %d %B %Y"
- åºåäŸïŒ
Saturday, 12 January 2025
å®è·µäŸ: ã«ã¹ã¿ã ãã©ãŒããã
1. æ¥æ¬èªåœ¢åŒã§è¡šç€ºãã
æ¥æ¬ã§ãã䜿ããããYYYY幎MMæDDæ¥ HHæMMåSSç§ãã®åœ¢åŒã§è¡šç€ºããŸãã
䜿çšäŸ
#include <stdio.h>
#include <time.h>
int main() {
time_t now = time(NULL);
struct tm *local = localtime(&now);
char buffer[80];
strftime(buffer, sizeof(buffer), "%Y幎%mæ%dæ¥ %Hæ%Må%Sç§", local);
printf("çŸåšã®æ¥æ: %s
", buffer);
return 0;
}
åºåäŸ
çŸåšã®æ¥æ: 2025幎01æ12æ¥ 15æ30å45ç§
2. ãã°çšã®ã¿ã€ã ã¹ã¿ã³ã
ã·ã¹ãã ãã°ã«åœ¹ç«ã€åœ¢åŒãYYYY-MM-DD_HH-MM-SSããçæããŸãã
䜿çšäŸ
#include <stdio.h>
#include <time.h>
int main() {
time_t now = time(NULL);
struct tm *local = localtime(&now);
char buffer[80];
strftime(buffer, sizeof(buffer), "%Y-%m-%d_%H-%M-%S", local);
printf("ãã°çšã¿ã€ã ã¹ã¿ã³ã: %s
", buffer);
return 0;
}
åºåäŸ
ãã°çšã¿ã€ã ã¹ã¿ã³ã: 2025-01-12_15-30-45
3. è±èªè¡šèšã®ææ¥ãå«ã圢åŒ
ãSat, 12 Jan 2025ãã®ãããªåœ¢åŒãçæããŸãã
䜿çšäŸ
#include <stdio.h>
#include <time.h>
int main() {
time_t now = time(NULL);
struct tm *local = localtime(&now);
char buffer[80];
strftime(buffer, sizeof(buffer), "%a, %d %b %Y", local);
printf("è±èªåœ¢åŒã®æ¥ä»: %s
", buffer);
return 0;
}
åºåäŸ
è±èªåœ¢åŒã®æ¥ä»: Sat, 12 Jan 2025
4. ãšã©ãŒã®åŠç
strftime()
ã®æ»ãå€ã0ã®å Žåããããã¡ãµã€ãºãå°ããããã©ãŒããããäžé©åã§ãã以äžã®ç¹ã確èªããŠãã ããïŒ
- ãããã¡ãµã€ãºïŒ
sizeof(buffer)
ïŒãååãã©ããã - ãã©ãŒãããæå®åãæ£ãããã
ãŸãšã
strftime()
颿°ã䜿çšããããšã§ãæå»ããŒã¿ãèªç±ã«ãã©ãŒãããã§ããŸããããã«ããããã°ãã¡ã€ã«ã®ã¿ã€ã ã¹ã¿ã³ãäœæãã人éãèªã¿ãããæ¥æã®è¡šç€ºãå¯èœã§ãã
次ã®ã»ã¯ã·ã§ã³ã§ã¯ãæå»ã®å ç®ãæžç®ã«ã€ããŠè§£èª¬ããŸããããšãã°ãçŸåšæå»ã«1æé远å ããããæ¥ä»ãèšç®ãããããæ¹æ³ãåŠã³ãŸãã
5. æå»ã®å ç®ã»æžç®
Cèšèªã§ã¯ãæéãæäœïŒå ç®ã»æžç®ïŒããããšã§ãæªæ¥ãéå»ã®æå»ãèšç®ã§ããŸãããã®ã»ã¯ã·ã§ã³ã§ã¯ãtime_t
åãmktime()
颿°ã䜿çšããæéã®æäœæ¹æ³ã解説ããŸãã
æå»ã®å ç®ãšæžç®: åºæ¬æŠå¿µ
time_t
åã¯ãã·ã¹ãã æå»ãç§æ°ãšããŠè¡šçŸããããŒã¿åã§ãããã®ãããç§åäœã§ã®èšç®ã容æã«è¡ããŸãã
- å ç®: ç§æ°ãè¶³ãããšã§æªæ¥ã®æå»ãèšç®ããŸãã
- æžç®: ç§æ°ãåŒãããšã§éå»ã®æå»ãèšç®ããŸãã
æå»ãæäœããæ¹æ³
1. time_t
åã§çŽæ¥æäœ
time_t
åã«ç§æ°ãå ç®ãŸãã¯æžç®ããŠæäœããŸãã
䜿çšäŸ: 1æéåŸã®æå»ãèšç®
#include <stdio.h>
#include <time.h>
int main() {
time_t now = time(NULL); // çŸåšæå»ãååŸ
time_t future = now + (60 * 60); // 1æéïŒ60åÃ60ç§ïŒåŸ
printf("çŸåšæå»ïŒç§æ°ïŒ: %ld
", now);
printf("1æéåŸïŒç§æ°ïŒ: %ld
", future);
return 0;
}
åºåäŸ
çŸåšæå»ïŒç§æ°ïŒ: 1700000000
1æéåŸïŒç§æ°ïŒ: 1700003600
ãã®æ¹æ³ã§ã¯ãåçŽãªç§åäœã®èšç®ãå¯èœã§ãã
2. mktime()
颿°ã䜿çšããæäœ
mktime()
颿°ã䜿çšãããšãæ¥ä»ãæå»ãè¶
ããŠæäœãå¯èœã§ãïŒäŸ: ç¿æ¥ãæ¥æã®æ¥ä»ãèšç®ïŒã
䜿çšäŸ: ç¿æ¥ã®æå»ãèšç®
#include <stdio.h>
#include <time.h>
int main() {
time_t now = time(NULL); // çŸåšæå»ãååŸ
struct tm *local = localtime(&now); // ããŒã«ã«æéã«å€æ
local->tm_mday += 1; // æ¥ã1æ¥é²ãã
time_t tomorrow = mktime(local); // ä¿®æ£åŸã®æå»ãtime_tã«å€æ
printf("çŸåšæå»: %s", ctime(&now));
printf("ç¿æ¥æå»: %s", ctime(&tomorrow));
return 0;
}
åºåäŸ
çŸåšæå»: Sat Jan 12 15:30:45 2025
ç¿æ¥æå»: Sun Jan 13 15:30:45 2025
泚æ
mktime()
ã¯èªåçã«æ¥ä»ã®ç¹°ãäžããç¹°ãäžããè¡ããŸãïŒäŸ: 1æ31æ¥ãã1æ¥é²ããš2æ1æ¥ã«ãªãïŒã
æéã®å·®ãèšç®ãã: difftime()
颿°
2ã€ã®time_t
åã®å€ã®å·®ãèšç®ããå Žåãdifftime()
颿°ã䜿çšããŸãããã®é¢æ°ã¯ãå·®ãç§åäœã§è¿ããŸãã
䜿çšäŸ: 2ã€ã®æå»ã®å·®ãèšç®
#include <stdio.h>
#include <time.h>
int main() {
time_t now = time(NULL); // çŸåšæå»
time_t future = now + (60 * 60 * 24); // 1æ¥åŸ
double diff = difftime(future, now); // æå»ã®å·®ãèšç®
printf("çŸåšæå»: %s", ctime(&now));
printf("1æ¥åŸ: %s", ctime(&future));
printf("å·®: %.0fç§
", diff);
return 0;
}
åºåäŸ
çŸåšæå»: Sat Jan 12 15:30:45 2025
1æ¥åŸ: Sun Jan 13 15:30:45 2025
å·®: 86400ç§
æå»æäœã®å¿çšäŸ
1. ã€ãã³ãã®ã¹ã±ãžã¥ãŒãªã³ã°
æªæ¥ã®æå»ãèšç®ããŠãäžå®ã®ééã§ã€ãã³ããçºçãããŸãã
2. éå»ã®èšé²ããŒã¿ã®åæ
éå»ã®æå»ãèšç®ããŠããã®éã®ããŒã¿ãæœåºã»åæããŸãã
3. æå»ããŒã¹ã®æ¡ä»¶åå²
çŸåšæå»ãšç¹å®ã®åºæºæå»ãæ¯èŒããŠãããã°ã©ã ã®åäœãåãæ¿ããããšãå¯èœã§ãã
æå»æäœæã®æ³šæç¹
- ã¿ã€ã ãŸãŒã³
ããŒã«ã«æéãæ±ãå Žåãã¿ã€ã ãŸãŒã³ã®èšå®ã«æ³šæããŠãã ãããã°ããŒãã«ãªçšéã§ã¯UTCã䜿çšããããšãæšå¥šãããŸãã - å ç®ã»æžç®ã®åäœ
ç§åäœã§ã®èšç®ãåºæ¬ã§ããã倧ããªæéã®æäœã«ã¯struct tm
ã䜿çšããæ¹ãé©åã§ãã
ãŸãšã
time_t
åã¯ç§åäœã§å ç®ã»æžç®ãå¯èœã- æ¥ä»ãæéãè¶
ããæäœã«ã¯
mktime()
颿°ã䜿çšã - æå»ã®å·®ãèšç®ããã«ã¯
difftime()
颿°ã掻çšã
次ã®ã»ã¯ã·ã§ã³ã§ã¯ãCèšèªã®æéåŠçã«é¢é£ããã2038幎åé¡ãã«ã€ããŠè©³ãã解説ããŸãããã®åé¡ãçè§£ããæªæ¥ã®ã·ã¹ãã éçºã«åããŸãããã
6. 2038幎åé¡ã«åãã
Cèšèªã®æéåŠçã§äœ¿çšãããtime_t
åã¯ãã·ã¹ãã æå»ã衚çŸããããã«åºã䜿ãããŠããŸãããããããã®time_t
åã«é¢é£ããŠãã2038幎åé¡ããšãã倧ããªèª²é¡ãååšããŸãããã®ã»ã¯ã·ã§ã³ã§ã¯ã2038幎åé¡ã®åå ã圱é¿ããããŠè§£æ±ºçã«ã€ããŠè©³ãã解説ããŸãã
2038幎åé¡ãšã¯ïŒ
2038幎åé¡ã¯ãCèšèªãã¯ãããšããå€ãã®ã·ã¹ãã ã§äœ¿çšãããtime_t
åãåå ã§çºçããæéèšç®ã®åé¡ã§ãã
åé¡ã®åå
time_t
åã¯ãéåžž32ãããã®ç¬Šå·ä»ãæŽæ°ãšããŠå®è£ ãããŠããŸãã- 1970幎1æ1æ¥0æ0å0ç§ïŒUnixãšããã¯ïŒãåºæºã«ãçµéç§æ°ãä¿æããŸãã
- 笊å·ä»ã32ãããæŽæ°ã§ã¯ã衚çŸã§ããæå€§å€ã¯2,147,483,647ã§ãã
- ãã®æå€§å€ã«å°éããã®ã¯2038幎1æ19æ¥3æ14å7ç§ïŒUTCïŒã§ããããã以éã¯æŽæ°ã®ãªãŒããŒãããŒãçºçããè² ã®å€ã«åãæ¿ãããŸãã
çºçäŸ
#include <stdio.h>
#include <time.h>
int main() {
time_t max_time = 2147483647; // æå€§å€ïŒ2038幎åé¡ã®å¢çïŒ
printf("2038幎åé¡ã®éçæå»: %s", ctime(&max_time));
time_t overflow_time = max_time + 1; // å¢çãè¶
ãã
printf("ãªãŒããŒãããŒåŸã®æå»: %s", ctime(&overflow_time));
return 0;
}
åºåäŸ
2038幎åé¡ã®éçæå»: Tue Jan 19 03:14:07 2038
ãªãŒããŒãããŒåŸã®æå»: Fri Dec 13 20:45:52 1901
ãã®äŸã§ã¯ããªãŒããŒãããŒã«ããæå»ã1901幎ã«å·»ãæ»ã£ãŠããŸããŸãã
2038幎åé¡ã®åœ±é¿
2038幎åé¡ã¯ãå€ãã®ã·ã¹ãã ã«ä»¥äžã®ãããªåœ±é¿ãäžããå¯èœæ§ããããŸãã
- é·æéã®ã¿ã€ããŒãã¹ã±ãžã¥ãŒãªã³ã°
- 2038幎以éã®æ¥æãæ±ãã¿ã€ããŒãã¹ã±ãžã¥ãŒãªã³ã°ãæ£åžžã«åäœããªããªããŸãã
- ãã¡ã€ã«ã·ã¹ãã
- ãã¡ã€ã«ã®ã¿ã€ã ã¹ã¿ã³ãïŒäœææ¥æãæŽæ°æ¥æïŒãæ£ããèšé²ãããªãå ŽåããããŸãã
- ãããã¯ãŒã¯ã·ã¹ãã
- æå»ãçšããèªèšŒã·ã¹ãã ããã°èšé²ãç°åžžãèµ·ããå¯èœæ§ããããŸãã
- çµã¿èŸŒã¿ã·ã¹ãã
- å€ãããã€ã¹ãã€ã³ãã©æ©åšïŒäŸ: ATMãPOS端æ«ïŒã§ã¯ã2038幎åé¡ãžã®å¯Ÿå¿ãé£ããå ŽåããããŸãã
2038幎åé¡ã®è§£æ±ºç
2038幎åé¡ãåé¿ããããã«ã¯ã以äžã®ãããªã¢ãããŒãããããŸãã
1. 64ãããç°å¢ãžã®ç§»è¡
time_t
åã64ãããã®æŽæ°ãšããŠåå®çŸ©ããããšã§ã2038幎åé¡ãäºå®äžè§£æ±ºã§ããŸãã- 64ãããã®
time_t
ã§ã¯ãçŽ2920å幎åã®æå»ã衚çŸå¯èœã«ãªããŸãã
䜿çšäŸ
64ãããç°å¢ã§ã¯ç¹ã«æèããã«åé¡ã解決ãããŠããå Žåãå€ãã§ãã
2. æå»åŠçã®ã©ã€ãã©ãªã掻çš
- æšæºã©ã€ãã©ãªä»¥å€ã«ããããæè»ãªæå»åŠçãæäŸããå€éšã©ã€ãã©ãªïŒäŸ:
Boost.DateTime
ãChrono
ïŒãå©çšããããšã§å¯Ÿå¿ã§ããŸãã
3. æå»ã®ä»£æ¿è¡šçŸ
- æååãç¬èªã®ããŒã¿åã䜿çšããŠãæå»ãä¿æããæ¹æ³ããããŸãããã ãããã®æ¹æ³ã¯æéãããããã·ã¹ãã å šäœã®èšèšå€æŽãå¿ èŠã«ãªãå ŽåããããŸãã
å®åã§ã®å¯Ÿå¿äŸ
ãµãŒããŒã®ç¢ºèªãšæŽæ°
- å€ã32ãããã·ã¹ãã ã䜿çšããŠããå Žåãå¯èœã§ããã°64ãããçã®ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãã©ã€ãã©ãªã«ã¢ããã°ã¬ãŒãããŸãã
æ¢åã³ãŒãã®èŠçŽã
time_t
ã䜿çšããŠããç®æã確èªãããªãŒããŒãããŒã®åœ±é¿ããªãããã§ãã¯ããŸãã
æ°èŠéçºã®æ³šæ
- æ°èŠéçºã§ã¯ã64ãããç°å¢ã§ã®åäœãåæãšããŠèšèšããããšãæšå¥šãããŸãã
2038幎åé¡ã®çŸç¶
è¿å¹Žãå€ãã®ã·ã¹ãã ã64ãããç°å¢ãžç§»è¡ããŠãããããæ°èŠéçºã§ã¯2038幎åé¡ãæèããå¿ èŠã¯æžå°ããŠããŸããããããç¹ã«å€ãçµã¿èŸŒã¿ã·ã¹ãã ãæŽæ°ãé£ããã€ã³ãã©ã§ã¯ããã®åé¡ãæ®ãå¯èœæ§ããããŸãã
ãŸãšã
- 2038幎åé¡ã¯ã
time_t
åã32ãããã§å®è£ ãããŠããå Žåã«çºçããæéèšç®ã®åé¡ã§ãã - 解決çãšããŠã64ãããç°å¢ãžã®ç§»è¡ãé©åãªã©ã€ãã©ãªã®äœ¿çšãæšå¥šãããŸãã
- å€ãã·ã¹ãã ã䜿çšããŠããå Žåã¯ãæ©ãã«å¯Ÿå¿çãæ€èšããããšãéèŠã§ãã
次ã®ã»ã¯ã·ã§ã³ã§ã¯ãCèšèªã§æéåŠçãæŽ»çšããå®è·µçãªãŠãŒã¹ã±ãŒã¹ã玹ä»ããŸããäŸãã°ãã¿ã€ã ã¹ã¿ã³ãã䜿ã£ããã°èšé²ãã€ãã³ãã®ã¹ã±ãžã¥ãŒãªã³ã°ãªã©ãçŸå®çãªå Žé¢ã§ã®å©ç𿹿³ã解説ããŸãã
7. å®è·µçãªãŠãŒã¹ã±ãŒã¹
Cèšèªã®æéåŠçã¯ãã·ã³ãã«ãªçŸåšæå»ã®ååŸã ãã§ãªããããŸããŸãªå®è·µçãªã·ã¹ãã ã§æŽ»çšãããŠããŸãããã®ã»ã¯ã·ã§ã³ã§ã¯ãæéåŠçã䜿çšããå ·äœçãªãŠãŒã¹ã±ãŒã¹ãããã€ã玹ä»ããŸãããããã®äŸãåèã«ããããšã§ãããã°ã©ã ã«æéåŠçãçµã¿èŸŒãã¢ã€ãã¢ãåŸãããšãã§ããã§ãããã
1. ãã°èšé²ã«ã¿ã€ã ã¹ã¿ã³ãã远å
ã·ã¹ãã ãã°ããšã©ãŒãã°ã«ã¯ãéåžžãå®è¡æã®ã¿ã€ã ã¹ã¿ã³ããèšé²ãããŸãããã®ã¿ã€ã ã¹ã¿ã³ãã远å ããããšã§ãåŸããåé¡ã®åå ã远跡ãããããªããŸãã
䜿çšäŸ: ãã°ã«ã¿ã€ã ã¹ã¿ã³ããèšé²
#include <stdio.h>
#include <time.h>
void log_message(const char *message) {
time_t now = time(NULL);
struct tm *local = localtime(&now);
char timestamp[80];
strftime(timestamp, sizeof(timestamp), "%Y-%m-%d %H:%M:%S", local);
printf("[%s] %s
", timestamp, message);
}
int main() {
log_message("ããã°ã©ã ãéå§ãããŸãã");
log_message("ãšã©ãŒãçºçããŸãã");
log_message("ããã°ã©ã ãçµäºããŸãã");
return 0;
}
åºåäŸ
[2025-01-12 15:30:45] ããã°ã©ã ãéå§ãããŸãã
[2025-01-12 15:30:46] ãšã©ãŒãçºçããŸãã
[2025-01-12 15:30:47] ããã°ã©ã ãçµäºããŸãã
2. ã€ãã³ãã®ã¹ã±ãžã¥ãŒãªã³ã°
ç¹å®ã®ééã§åŠçãå®è¡ããã¿ã€ããŒæ©èœãå®è£ ããããšã¯ãã²ãŒã ããªã¢ã«ã¿ã€ã ã·ã¹ãã ã§ãã䜿ãããŸãã
䜿çšäŸ: ã¿ã€ããŒã®å®è£
以äžã¯ã5ç§ããšã«ã€ãã³ããå®è¡ããããã°ã©ã ã®äŸã§ãã
#include <stdio.h>
#include <time.h>
#include <unistd.h> // UNIXç°å¢çšã®ã¹ãªãŒã颿°
void perform_task() {
printf("ã€ãã³ããå®è¡ãããŸãã
");
}
int main() {
time_t start = time(NULL);
while (1) {
time_t now = time(NULL);
if (difftime(now, start) >= 5) { // 5ç§çµéãããã¿ã¹ã¯ãå®è¡
perform_task();
start = now; // éå§æå»ãæŽæ°
}
sleep(1); // CPUè² è·ãæžãããã1ç§ã¹ãªãŒã
}
return 0;
}
åºåäŸ
ã€ãã³ããå®è¡ãããŸãã
ïŒ5ç§åŸïŒ
ã€ãã³ããå®è¡ãããŸãã
ïŒããã«5ç§åŸïŒ
ã€ãã³ããå®è¡ãããŸãã
3. æ¥ä»æäœãšæé管ç
æ¥ä»ãèšç®ããŠãç¹å®ã®æéïŒäŸ: æ¯æãææ¥ãã¿ã¹ã¯ã®ç· ãåãïŒã管çããããšãéèŠã§ãã
䜿çšäŸ: æ¯æãææ¥ã®èšç®
以äžã¯ãçŸåšã®æ¥ä»ãã30æ¥åŸãèšç®ããŠæ¯æãææ¥ã衚瀺ããããã°ã©ã ã®äŸã§ãã
#include <stdio.h>
#include <time.h>
int main() {
time_t now = time(NULL);
struct tm *due_date = localtime(&now);
due_date->tm_mday += 30; // 30æ¥åŸ
mktime(due_date); // æ¥ä»ãæ£èŠå
char buffer[80];
strftime(buffer, sizeof(buffer), "%Y-%m-%d", due_date);
printf("æ¯æãææ¥ã¯: %s
", buffer);
return 0;
}
åºåäŸ
æ¯æãææ¥ã¯: 2025-02-11
4. ããã°ã©ã ã®å®è¡æéèšæž¬
ããã°ã©ã ã®ããã©ãŒãã³ã¹ãæé©åããéã«ã¯ãå®è¡æéãèšæž¬ããããšãéèŠã§ãã
䜿çšäŸ: åŠçæéã®èšæž¬
#include <stdio.h>
#include <time.h>
int main() {
clock_t start = clock();
// èšæž¬å¯Ÿè±¡ã®åŠçïŒäŸ: ã«ãŒãåŠçïŒ
for (volatile long i = 0; i < 100000000; i++);
clock_t end = clock();
double elapsed = (double)(end - start) / CLOCKS_PER_SEC;
printf("åŠçæé: %.3f ç§
", elapsed);
return 0;
}
åºåäŸ
åŠçæé: 0.215 ç§
5. æå»ããŒã¹ã®æ¡ä»¶åå²
ããã°ã©ã ã®æåãå®è¡æå»ã«å¿ããŠå€åãããããšãå¯èœã§ããããšãã°ãååäžãšååŸã§ç°ãªãã¡ãã»ãŒãžã衚瀺ããããã°ã©ã ãäœæã§ããŸãã
䜿çšäŸ: ååã»ååŸã§ã¡ãã»ãŒãžãåãæ¿ã
#include <stdio.h>
#include <time.h>
int main() {
time_t now = time(NULL);
struct tm *local = localtime(&now);
if (local->tm_hour < 12) {
printf("ãã¯ããããããŸãïŒ
");
} else {
printf("ããã«ã¡ã¯ïŒ
");
}
return 0;
}
åºåäŸïŒååã®å ŽåïŒ
ãã¯ããããããŸãïŒ
åºåäŸïŒååŸã®å ŽåïŒ
ããã«ã¡ã¯ïŒ
ãŸãšã
Cèšèªã®æéåŠçã¯ããã°èšé²ãã¹ã±ãžã¥ãŒãªã³ã°ãæ¥ä»èšç®ãå®è¡æéã®èšæž¬ãªã©ãããŸããŸãªã·ã¹ãã ã§åœ¹ç«ã¡ãŸããæ¬ã»ã¯ã·ã§ã³ã§ç޹ä»ãããŠãŒã¹ã±ãŒã¹ã¯ãæ¥åžžçãªããã°ã©ã äœæã«ãããŠåœ¹ç«ã€ã§ãããã
次ã®ã»ã¯ã·ã§ã³ã§ã¯ãããããã質åïŒFAQïŒããåãäžããŸããæéåŠçã«é¢ããŠèªè ãæ±ããããçåã解決ããŠãããŸãã
8. ãããã質åïŒFAQïŒ
Cèšèªã§æéåŠçãè¡ãéãåå¿è ããäžçŽè ãŸã§å€ãã®æ¹ãçåãæ±ãããšããããŸãããã®ã»ã¯ã·ã§ã³ã§ã¯ããããã質åã«çããªãããæéåŠçã«ã€ããŠã®çè§£ãæ·±ããŠãããŸãã
Q1. çŸåšæå»ãæ¥æ¬æéïŒJSTïŒã§ååŸããæ¹æ³ã¯ïŒ
A. æ¥æ¬æéïŒJSTïŒã¯ãåå®äžçæïŒUTCïŒãã9æéé²ãã§ããŸããlocaltime()
颿°ã¯ã·ã¹ãã ã®ããŒã«ã«ã¿ã€ã ãŸãŒã³ãèæ
®ããŠå€æãããããã·ã¹ãã ã®ã¿ã€ã ãŸãŒã³ãJSTã«èšå®ãããŠããã°èªåçã«æ¥æ¬æéãååŸã§ããŸãã
䜿çšäŸ
#include <stdio.h>
#include <time.h>
int main() {
time_t now = time(NULL);
struct tm *local = localtime(&now);
printf("çŸåšã®æ¥æ¬æé: %d-%02d-%02d %02d:%02d:%02d
",
local->tm_year + 1900, local->tm_mon + 1, local->tm_mday,
local->tm_hour, local->tm_min, local->tm_sec);
return 0;
}
è£è¶³: ã·ã¹ãã ã®ã¿ã€ã ãŸãŒã³ãæ£ããèšå®ãããŠããããšã確èªããŠãã ããã
Q2. æå»ãããªç§åäœã§ååŸããããšã¯ã§ããŸããïŒ
A. æšæºã®time.h
ã§ã¯ããªç§åäœã®ååŸã¯ãµããŒããããŠããŸããããã ãããã©ãããã©ãŒã äŸåã®APIïŒäŸ: UNIXç°å¢ã§ã¯gettimeofday()
颿°ïŒã䜿çšããã°ããªç§ç²ŸåºŠã§ã®ååŸãå¯èœã§ãã
䜿çšäŸ: UNIXç°å¢ã§ããªç§ãååŸ
#include <stdio.h>
#include <sys/time.h>
int main() {
struct timeval tv;
gettimeofday(&tv, NULL);
printf("çŸåšæå»: %ld ç§ãš %ld ããªç§
", tv.tv_sec, tv.tv_usec / 1000);
return 0;
}
åºåäŸ
çŸåšæå»: 1700000000 ç§ãš 123 ããªç§
Q3. 倿éïŒDSTïŒã«å¯Ÿå¿ããæ¹æ³ã¯ïŒ
A. 倿éïŒDaylight Saving Time: DSTïŒã¯ãstruct tm
æ§é äœã®tm_isdst
ã¡ã³ããŒã§å€å¥ã§ããŸãã
1
: 倿éãé©çšäžã0
: 倿éã¯é©çšãããŠããªãã-1
: å€æéæ å ±ãäžæã
䜿çšäŸ
#include <stdio.h>
#include <time.h>
int main() {
time_t now = time(NULL);
struct tm *local = localtime(&now);
if (local->tm_isdst > 0) {
printf("çŸåšã¯å€æéã§ã
");
} else {
printf("çŸåšã¯å€æéã§ã¯ãããŸãã
");
}
return 0;
}
Q4. strftime()
ã§æ¥æ¬èªã®ææ¥ã衚瀺ã§ããŸããïŒ
A. æšæºã®strftime()
ã¯ãã±ãŒã«ïŒèšèªãšå°åèšå®ïŒãèæ
®ããŸããsetlocale()
颿°ã䜿çšããŠãã±ãŒã«ãæ¥æ¬èªã«èšå®ããããšã§ãæ¥æ¬èªã®ææ¥ã衚瀺ã§ããŸãã
䜿çšäŸ
#include <stdio.h>
#include <time.h>
#include <locale.h>
int main() {
setlocale(LC_TIME, "ja_JP.UTF-8");
time_t now = time(NULL);
struct tm *local = localtime(&now);
char buffer[80];
strftime(buffer, sizeof(buffer), "%Y幎%mæ%dæ¥ %A", local);
printf("çŸåšã®æ¥æ: %s
", buffer);
return 0;
}
åºåäŸ
çŸåšã®æ¥æ: 2025幎01æ12æ¥ æ¥ææ¥
泚æ: ãã±ãŒã«èšå®ãã·ã¹ãã ã«äŸåãããããæ¥æ¬èªãã±ãŒã«ãèšå®ãããŠããªãç°å¢ã§ã¯åäœããªãå ŽåããããŸãã
Q5. 2038幎以éã®æå»ãæ£ããæ±ãæ¹æ³ã¯ïŒ
A. 2038幎åé¡ãåé¿ããã«ã¯ã64ãããã®time_t
ã䜿çšããããå¥ã®ããŒã¿åã§æå»ãä¿æããæ¹æ³ãæ¡çšããŸããã»ãšãã©ã®64ãããç°å¢ã§ã¯time_t
ã64ãããã«æ¡åŒµãããŠãããããç¹ã«æèããã«2038幎以éãæ±ããŸãã
䜿çšäŸ: 64ãããtime_t
ç°å¢ã§ã®ç¢ºèª
#include <stdio.h>
#include <time.h>
int main() {
time_t future = 2147483648; // 2038幎åé¡ãè¶
ããå€
printf("æå»: %s", ctime(&future));
return 0;
}
åºåäŸ
æå»: Tue Jan 19 03:14:08 2038
泚æ: 32ãããç°å¢ã§ã¯æ£ããåäœããªãå¯èœæ§ããããŸãã
Q6. ããã°ã©ã ãæåŸ ããæå»ãåºåããªãå Žåã®åå ã¯ïŒ
A. äž»ãªåå ãšããŠä»¥äžãèããããŸãïŒ
- ã¿ã€ã ãŸãŒã³ã®èšå®ãã¹: ã·ã¹ãã ã®ã¿ã€ã ãŸãŒã³ãæ£ããèšå®ãããŠããã確èªããŠãã ããã
struct tm
ã®äžæ£ãªå€:mktime()
ã§å€æããéãæ§é äœã®å€ãäžæ£ã ãšæåŸ ããªãçµæã«ãªããŸãã- å€ãæšæºã©ã€ãã©ãª: æå»åŠçãå€ãã©ã€ãã©ãªã«äŸåããŠããå Žåãã¢ããããŒããå¿ èŠã§ãã
ãŸãšã
ãã®FAQã»ã¯ã·ã§ã³ã§ã¯ãCèšèªã§æéåŠçãè¡ãéã«ããããçåãšãã®è§£æ±ºçã解説ããŸãããå®éã«ã³ãŒãã詊ããŠã¿ãããšã§ãæéåŠçã«é¢ããçè§£ãæ·±ãŸãã§ãããã
次ã®ã»ã¯ã·ã§ã³ã§ã¯ãæ¬èšäºå šäœã®ãŸãšããè¡ããåŠãã å 容ãç°¡åã«æ¯ãè¿ããŸãã

9. ãŸãšã
æ¬èšäºã§ã¯ãCèšèªã§ã®æéåŠçã«ã€ããŠãåºæ¬ããå¿çšãŸã§ã詳ãã解説ããŸãããæéåŠçã¯ãããã°ã©ã ã«ãããéèŠãªæ©èœã®äžã€ã§ãããæ£ããçè§£ããããšã§å€ãã®å Žé¢ã§æŽ»çšã§ããŸãã
èšäºã®æ¯ãè¿ã
以äžã«ãæ¬èšäºã§åŠãã äž»ãªãã€ã³ãããŸãšããŸãã
- Cèšèªã®æéåŠçã®åºæ¬
time.h
ããããã¡ã€ã«ã䜿çšããŠãã·ã¹ãã æå»ãååŸããããŸããŸãªæäœãè¡ãæ¹æ³ãåŠã³ãŸããã- äž»ãªããŒã¿åïŒ
time_t
ãstruct tm
ïŒã颿°ïŒtime()
ãlocaltime()
ãmktime()
ãªã©ïŒã解説ããŸããã
- çŸåšæå»ã®ååŸãšè¡šç€º
time()
颿°ã䜿çšããŠçŸåšæå»ãååŸããlocaltime()
ãgmtime()
ã§ããŒã«ã«æéãUTCæéã«å€æããæ¹æ³ãåŠã³ãŸãããctime()
ãstrftime()
ã䜿ããæå»ã人éãèªã¿ããã圢åŒã«ãã©ãŒãããããæ¹æ³ã玹ä»ããŸããã
- æå»ã®æäœãšèšç®
time_t
åã§ç§åäœã®å ç®ã»æžç®ãè¡ãåºæ¬æäœã解説ããŸããã- æ¥ä»ããŸããè€éãªæäœã«ã¯
mktime()
颿°ã䜿çšããæéãæ£èŠåããæ¹æ³ãåŠã³ãŸããã difftime()
ã䜿çšããŠã2ã€ã®æå»ã®å·®ãèšç®ããæ¹æ³ã説æããŸããã
- 2038幎åé¡ã®çè§£ãšå¯Ÿç
time_t
åã32ãããã§å®è£ ãããŠããå Žåã«çºçããã2038幎åé¡ãã®åå ãšåœ±é¿ã説æããŸããã- 解決çãšããŠã64ãããç°å¢ãžã®ç§»è¡ãé©åãªã©ã€ãã©ãªã®äœ¿çšãææ¡ããŸããã
- å®è·µçãªãŠãŒã¹ã±ãŒã¹
- ã¿ã€ã ã¹ã¿ã³ãã䜿ã£ããã°èšé²ããç¹å®ã®ééã§åŠçãå®è¡ããã¹ã±ãžã¥ãŒãªã³ã°ã®å®è£ äŸã玹ä»ããŸããã
- å®è¡æéã®èšæž¬ãæ¥ä»èšç®ãå«ããå ·äœçãªå¿çšäŸãåŠã³ãŸããã
- FAQã§çåãè§£æ¶
- æ¥æ¬æéã®ååŸãããªç§ã®èšç®ã倿é察å¿ãªã©ãæéåŠçã«é¢ããããããçåãšãã®è§£æ±ºçã解説ããŸããã
å®è·µãžã®äžæ©
Cèšèªã®æéåŠçã¯ããã°ã·ã¹ãã ãã¿ã€ããŒæ©èœãã¹ã±ãžã¥ãŒãªã³ã°ãªã©ãå¹ åºãçšéã§äœ¿çšãããŸããæ¬èšäºã§ç޹ä»ããã³ãŒãäŸãåèã«ãèªåã®ãããžã§ã¯ãã§æéåŠçãæŽ»çšããŠã¿ãŠãã ããã
次ã®ã¹ããã
ããã«æ·±ãåŠã³ããå Žåã¯ã以äžã®ãããã¯ãããããã§ãã
- ãã«ãã¹ã¬ããç°å¢ã§ã®æéåŠç
ã¹ã¬ããã»ãŒããªæéæäœãåŠã¶ããšã§ã䞊åããã°ã©ãã³ã°ã§ã®æéåŠçãå¯èœã«ãªããŸãã - å€éšã©ã€ãã©ãªã®æŽ»çš
BoostãChronoãªã©ã®ã©ã€ãã©ãªã掻çšãããšãããæè»ã§åŒ·åãªæéæäœãå®çŸã§ããŸãã - ã·ã¹ãã å
šäœã®ã¿ã€ã ãŸãŒã³ç®¡ç
ã°ããŒãã«ãªã·ã¹ãã ãèšèšããå Žåãã¿ã€ã ãŸãŒã³ã®ç®¡çãéèŠã§ãã
æåŸã«
æéã¯ãã¹ãŠã®ããã°ã©ã ã«ãããŠéèŠãªèŠçŽ ã®äžã€ã§ããæ¬èšäºããCèšèªã§ã®æéåŠçã®çè§£ãæ·±ãããã广çãªããã°ã©ã ãæ§ç¯ããæå©ããšãªãã°å¹žãã§ãã