æ¢ã«çè§£ããŠããããã«ããã®èšäºã§ã¯Boost.Date_Timeã©ã€ãã©ãªã«çŠç¹ãåœãŠãŸãã æéãæäœããããã®ã©ã€ãã©ãªã
ãã®èšäºã§ã¯ãã©ã€ãã©ãªã®æ¬¡ã®éšåã«ã€ããŠæ€èšããŸãã
- ã°ã¬ãŽãªãª
- ããžã·ãã¯ã¹ã¿ã€ã
- çŸå°æé
ã¯ããã«
ä»ã§ã¯ãèªåã®ç®çã®ããã«æéã䜿çšããå¿
èŠæ§ã«çŽé¢ããããšã®ãªã人ããŸãã¯ããã圌ã®ããžã¿ã«ãã¬ãŒã³ããŒã·ã§ã³ãèŠã€ããããšã¯ããããé£ããã§ãããã ç®æšã¯ãç¹å®ã®ã³ãŒããå®è¡ãããæéééã®åçŽãªæž¬å®ãšã¯ãŸã£ããç°ãªãå ŽåããããŸãïŒæ¹æ³ã«ã€ããŠã¯ããããã¡ã€ãªã³ã°ã®å®å
šã«èª€ã£ãæ¹æ³ã§ãããçŸåšã§ã¯ããã§ã¯ãããŸããïŒãã¢ããªã±ãŒã·ã§ã³ã§æ¬æ Œçãªã«ã¬ã³ããŒããµããŒãããŸããå°çäžã§ã ãããã®ãã¹ãŠã®æäœã¯ãããªã峿 Œã§äœ¿ããããããåæã«åŒ·åãªBoost.Date_Timeã©ã€ãã©ãªã䜿çšããŠå®è¡ã§ããŸãã ã©ã€ãã©ãªã§ã¯ã
ããã幎 ã
ãããç§ ã倿éãªã©ãèæ
®ãããŸãã
ã©ã€ãã©ãªã§äœ¿çšãããããã€ãã®çšèªãæ±ããŸãããã
ã©ã€ãã©ãªã«ã¯ã3ã€ã®ã°ããŒãã«ã¿ã€ãã®ã¿ã€ã ã·ã§ã¢ãªã³ã°ããããŸãã
- æéãã€ã³ã -é£ç¶æéã®ç¹å®ã®ãã€ã³ããããšãã°ãçå¹Žææ¥
- ç¶ç¶æé -é£ç¶äœã®ã©ã®ç¹ã«ãçµã³ä»ããããŠããªãæééé
- æééé -æéé£ç¶ã®ç¹å®ã®ãã€ã³ãã«é¢é£ä»ããããæééé
ãŸããæéãååŸããåæ¹æ³ã®è§£å床ãèŠããŠããå¿
èŠããããŸããè§£å床ïŒ
Resolution ïŒã¯ãæéãªããžã§ã¯ãã®åæã«äœ¿çšã§ããæå°åäœæéã瀺ããŸãã ã€ãŸããåŸãããæç¹ã®ç²ŸåºŠã®çšåºŠã«ä»ãªããŸããã æåŸã«ãã©ã€ãã©ãªã®æ©èœãçŽæ¥ç¥ãåããŸãããã
ãã®èšäºã§äœ¿çšãããã¹ãŠã®äŸã¯ãåã³ã³ãã€ã«æžã¿ãŠãããã®å
é ã§åå空éboost :: <corresponding_namespace>ã䜿çšããããšãæå³ããŠããŸãããã®ã³ã³ããŒãã³ãã¯ã
ã°ã¬ãŽãªãªæŠãšããã䜿çšããŠèãããããã¹ãŠã®å¯èœæ§ãæç€ºããŸãã æ¬¡ã«ã次ã®ã³ã³ããŒãã³ãã«åå²ãããŸãã
ããããã®ç®çãåæããŸãããã
boost :: gregorian :: date-ç°¡åã«æ¥ä»ãä¿åããããã«èšèšãããŠããŸã-é£ç¶ããæç¹ã
time_tã«é¢é£ä»ããããæšæºC \ C ++ã¡ã«ããºã ã«åºã¥ããŠãç¹å®ã®åœ¢åŒã®æååããã®æ¥ä»ã®äœæãããã³
boost :: date_time :: day_clockã¯ã©ã¹ãä»ããæ¥ä»ã®äœæããµããŒãããŸãã
æ¥ä»ïŒæŒç®å=ãé€ããŠãªããžã§ã¯ãã«ãã£ãŠå€æŽã§ããªãïŒã®ä¿åã«å ããŠãã¯ã©ã¹ã«ã¯æ¥ä»ã®ç¹å®ã®éšåïŒå¹ŽïŒïŒãæïŒïŒãæ¥ïŒïŒãªã©ïŒãåãåããæ¥ä»ã®å
éšè¡šçŸãæååã«å€æããã¡ãœãã*ããããŸããç¹å®ã®åœ¢åŒïŒto_simple_stringïŒïŒãto_iso_stringïŒïŒãto_iso_extended_stringïŒïŒïŒããã³æšæºC \ C ++æ§é äœ
tm ïŒto_tmïŒïŒãdate_from_tmïŒïŒïŒãžã®å€æïŒããã³ãã®éïŒ
*-
åæ©èœã®èª¬æã¯æäŸããŸãããããã«ãå©çšå¯èœãªæ©èœã®å®å
šãªãªã¹ããæäŸããŸãããç¹å®ã®ã¯ã©ã¹ã«å¯Ÿå¿ãããªã³ã¯ã§ãããã®ãªã¹ãã確èªã§ããŸãã éåžžã«å€ãã®é¢æ°ãããããããã¯éåžžã«äœ¿ããããã®ã§ãçŸæç¹ã§éèŠã§ãªããšèããå Žåã颿°ãã©ã¡ãŒã¿ãŒã®ååšãçç¥ããŸããäŸïŒ
date xGPWStart(1941, Jun, 22);
date xNowdays = day_clock::local_day();
std::cout << "The Great Patriotic War was started in " << xGPWStart << std::endl;
std::cout << "And the current data is " << xNowdays;
* This source code was highlighted with Source Code Highlighter .
çµè«ïŒ
倧ç¥åœæŠäºã¯1941幎6æ22æ¥ã«éå§ãããŸãã
ãããŠçŸåšã®ããŒã¿ã¯2009幎7æ26æ¥ã§ã
boost :: gregorian :: date_duration-èšç®ã«
boost :: gregorian :: dateã䜿çšããŠæ¥æ°ãã«ãŠã³ãããŸãã
date_durationã§ã®äœæ¥ã®äŸ¿å®äžã
months_duration ã
years_duration ãããã³
weeks_durationã® 3ã€ã®ã¯ã©ã¹ããããŸãïŒãããã®åã«ã¯typedefããã
ããããã
æ ã
幎 ã
é±ã衚瀺ãããŸãïŒãdate_durationããå ç®ãŸãã¯æžç®ããŠãç®çã®çµæãååŸã§ããŸãã ãããã®3ã€ã®ã¯ã©ã¹ã«é¢é£ããèœãšã穎ããããŸãã èšç®ã§äœ¿çšãããšãäºæããªãçµæãåŸãããå¯èœæ§ããããŸãã äŸãæããŸãã
date xSomeDay(1999, Jan, 28);
date xDayInNextMonth;
std::cout << "That's right: " << ( xDayInNextMonth = xSomeDay + months(1) ) << std::endl;
std::cout << "And that's not: " << xDayInNextMonth + months(1);
* This source code was highlighted with Source Code Highlighter .
ããã§ãïŒ1999幎2æ28æ¥
ããã¯éããŸãïŒ1999-Mar-31
ãã®åäœã¯ãæåã®ãªããžã§ã¯ããæïŒ
28ã29ã30ã31ïŒãçµäºããå¯èœæ§ã®ããæ°å€ã®ãããããæããŠããå Žåã
months_durationã¯ã©ã¹ã®ç¹æ§ã«ãããã®ã§ãããã®ã¯ã©ã¹ã¯ãç®è¡æŒç®ã§åžžã«ææ«ã䜿çšããŸãã ãã®ã¿ã€ãã䜿çšãããšã
㯠ã
month_iteratorã«ãã®æ¬ ç¹ããããŸããïŒå©ç¹ïŒïŒ
ããšã«æ³šæããŠãã ãããããããåŸã§èª¬æããŸãã
boost :: gregorian :: date_period-ã¯ã©ã¹ã¯ã2ã€ã®æ¥ä»éã®ééãç°¡åã«è¡šç€ºããããã«æç€ºãããæéééïŒïŒïŒãå«ãïŒãééïŒäº€å·®ïŒïŒã亀差ïŒïŒïŒã飿¥æ¥ä»ïŒ is_adjacentïŒïŒïŒããã³ããæ¥ä»ã®äœçœ®ãšå¥ã®æ¥ä»ã®äœçœ®ã®é¢ä¿ã決å®ããŸãïŒis_afterïŒïŒãis_beforeïŒïŒïŒã ããã«ãééãçµåããæ¹æ³ïŒããŒãžïŒïŒãã¹ãã³ïŒïŒïŒãšãããã倿Žããæ¹æ³ïŒã·ããïŒïŒãå±éïŒïŒïŒããããŸãã æéã®æåŸã®ãéã¯æéå
šäœã«å«ãŸããªãããšãèŠããŠããããšãéèŠã§ããã€ãŸããæé1999幎1æ1æ¥\ 1999幎1æ10æ¥ã§ã¯ãæçµæ¥ã¯10ã§ã¯ãªã1æ9æ¥ã«ãªããŸãã
äŸïŒ
date_period xGPWDuration( date(1941, Jun, 22), date(1945, May, 9) );
date_period xStalinLifeYears( date(1878, Dec, 18), date(1953, Mar, 6) ); date_period xJukovsIncorrectLifeYears( date(1896, Dec, 6), date(1974, Jun, 14) );
std::cout << "The Great Patriotic War duration is " << xGPWDuration << std::endl;
std::cout << "Was the GPW inside the Stalin's life years? " << std::boolalpha << xStalinLifeYears.contains(xGPWDuration) << std::endl;
std::cout << "Jukov's incorrect life years is " << xJukovsIncorrectLifeYears << std::endl;
xJukovsIncorrectLifeYears.expand( days(5) );
std::cout << "Jukov's correct life years is " << xJukovsIncorrectLifeYears << std::endl;
//Last day isn't included in the interval
date_period xFirstPeriod( date(1999, Jan, 1), date(1999, Jan, 10) );
date_period xSecondPeriod( date(1999, Jan, 10), date(1999, Jan, 12) );
std::cout << "Does these periods intersect? " << std::boolalpha << xFirstPeriod.intersects(xSecondPeriod) << std::endl;
* This source code was highlighted with Source Code Highlighter .
çµè«ïŒ
倧ç¥åœæŠäºã®æéã¯[1941-Jun-22 / 1945-May-08]ã§ã
GPWã¯ã¹ã¿ãŒãªã³ã®ç涯ã®äžã§ãããïŒ æ¬åœ
ãŠã³ãã®èª€ã£ãç幎ã¯[1896-Dec-06 / 1974-Jun-13]ã§ã
ãŠã³ãã®æ£ãã寿åœã¯[1896-Dec-01 / 1974-Jun-18]ã§ã
ãããã®æéã¯äº€å·®ããŠããŸããïŒ åœ
boost :: gregorian :: date_iterator-ååã瀺ããšãã-ããã¯ãæ¥ä»ããç§»åãããããã«èšèšãããå
žåçãªå埩åã§ãã
date_iteratorèªäœã¯ãæœè±¡ã¯ã©ã¹ã§ããããã®äžäœã¯ã©ã¹ã§ãã
day_iterator ã
week_iterator ã
month_iterator ã
year_iteratorã§ãããããè峿·±ããã®ã§ã¯ãããŸããã
äŸãšããŠã誀ã£ãæ¥ä»ãåãåã£ã
date_durationã®äŸã䜿çšããŸãïŒæã®ããèœãšã穎ã®ããïŒã åè¿°ããããã«ã
date_iteratorã«ã¯
ãã®ãããªåé¡ã¯ãã
ãŸãã ã
month_iterator xSomeDay(date(1999, Jan, 28));
std::cout << "That's right: " << *++xSomeDay << std::endl;
std::cout << "And that's too!: " << *++xSomeDay;
* This source code was highlighted with Source Code Highlighter .
ããã§ãïŒ1999幎2æ28æ¥
ãããŠãããïŒïŒ1999-Mar-28
æ¥ä»ãæäœããããã®
ã¢ã«ãŽãªãºã -æ¥ä»ã®ããŸããŸãªæäœã®ããã®å€æ§ãªã¯ã©ã¹ãšé¢æ°ã®ã»ããã åã¯ã©ã¹ã«ã¯get_dataïŒïŒã¡ãœãããããããã®ã¯ã©ã¹ã§çæãããæ¥ä»ãååŸã§ããŸãã ã¯ã©ã¹ã¯æ¬¡ã®æ©èœãæäŸããŸãã
- ç¹å®ã®æãšé±ã®æåã®æ¥ãæåŸã®æ¥ããŸãã¯ä»»æã®æ¥ãååŸããŸãïŒfirst_day_of_the_week_in_the_monthïŒïŒãlast_day_of_the_week_in_the_monthïŒïŒãnth_day_of_the_week_in_the_monthïŒã æ€çŽ¢ããææ¥ãèšå®ãããŸãã
- éšåçãªæ¥ä»ïŒå¹Žãé€ãïŒãèšå®ããŸãïŒpartial_dateïŒïŒïŒã ãããŠãget_dataïŒïŒã䜿çšããŠå®å
šãªæ¥ä»ãååŸããŸã
- æå®ããæ¥ä»ã®ååŸã®é±ã®æåã®æ¥ãèšç®ããŸãïŒfirst_day_of_the_week_beforeïŒïŒãfirst_day_of_the_week_afterïŒïŒïŒã ææ¥ã¯èšç®ã®ããã«èšå®ãããŸã
颿°ã¯æ¬¡ã®æ©èœãæäŸããŸãã
- çŸåšã®æ¥ä»ããæ¬¡ãŸãã¯åã®æå®ãããææ¥ãŸã§ã®æ¥æ°ãèšç®ããŸãïŒdays_until_weekdayïŒïŒãdays_before_week_dayïŒïŒïŒã
- 次ãŸãã¯åã®æå®ãããææ¥ã®æ¥ä»ã«ãªãæ¥ä»ãçæããŸãã äºåå®çŸ©ãããæ¥ä»ã«é¢é£ããŠãæ°ããæ¥ä»ãçæãããŸãã
äŸïŒ
last_day_of_the_week_in_month xLastFriday(Friday, Jul);
partial_date xJunTen(10, Jun);
std::cout << "What is the date of the last friday in the July 2009? " << xLastFriday.get_date(2009) << std::endl;
std::cout << "Just dusplay 10 Jun of 2009 " << xJunTen.get_date(2009) << std::endl;
std::cout << "How much days from now till next friday? " << days_until_weekday( day_clock::local_day(), greg_weekday(Friday) )<< std::endl;
* This source code was highlighted with Source Code Highlighter .
çµè«ïŒ
2009幎7æã®æåŸã®éææ¥ã®æ¥ä»ã¯äœã§ããïŒ 2009幎7æ31æ¥
2009幎6æ10æ¥2009幎6æ10æ¥
ä»ããæ¬¡ã®éææ¥ãŸã§äœæ¥ã§ããïŒ 5
boost :: gregorian :: gregorian_calendar-æ¥ä»ãæäœããããã®æçšãªéç颿°ã»ãããæäŸããŸãã
颿°ã説æãã代ããã«ããã®äœ¿çšäŸã瀺ããŸãïŒé¢æ°ã¯åçŽã§ãååã¯ããèªäœãç©èªã£ãŠããŸãïŒã
std::cout << "What the day of the GPW begining? " << DayToString( gregorian_calendar::day_of_week( gregorian_calendar::ymd_type(1941, Jun, 22) ) ) << std::endl;
std::cout << "And what is the number of this day frome the epoch start? " << gregorian_calendar::day_number( gregorian_calendar::ymd_type(1941, Jun, 22) ) << std::endl;
std::cout << "And what is the number of this day frome the epoch start? " << gregorian_calendar::day_number( gregorian_calendar::ymd_type(1400, Jan, 1) ) << std::endl;
std::cout << "What is the last day in the February 1941? " << gregorian_calendar::end_of_month_day(1941, Feb) << std::endl;
std::cout << "What is the date of the 3333333 day from the epoch start? " << date( gregorian_calendar::from_day_number(3333333) ) << std::endl;
std::cout << "Is the 2004 year a leap year? " << std::boolalpha << gregorian_calendar::is_leap_year(2004) << std::endl;
* This source code was highlighted with Source Code Highlighter .
çµè«ïŒ
GPWãå§ãŸãæ¥ã¯ïŒ æ¥ææ¥
ãããŠããšããã¯ã®éå§ãããã®æ¥ã®æ°ã¯äœã§ããïŒ 2430168
ãããŠããšããã¯ã®éå§ãããã®æ¥ã®æ°ã¯äœã§ããïŒ 2232400
1941幎2æã®æçµæ¥ã¯äœã§ããïŒ 28
ãšããã¯éå§ãã3333333æ¥ã®æ¥ä»ã¯äœã§ããïŒ 4414-Apr-03
2004幎ã¯le幎ã§ããïŒ æ¬åœ
çµéšçã«ã颿°day_numberïŒïŒããã³from_day_numberïŒïŒã®æå°å€ã¯ããããã1400-Jan-1ããã³2232400ã§ããããšãããããŸããã 1400-Jan-1ããåã®æ¥ä»ã䜿çšããããšãããšãäŸå€ãçºçããŸãã åãããšãæ¥æ°ã«ãåœãŠã¯ãŸããŸãã
ãã®ã³ã³ããŒãã³ãã¯ããã€ã³ãã€ã³ã¿ã€ã ã§ã®äŸ¿å©ãªæäœæ¹æ³ãæäŸããŸããã
boost :: gregorian boost :: posix_timeãšã¯ç°ãªããäœè§£å床ã®ã¿ã€ã ãã€ã³ãïŒããç§ãŸã§ïŒã§æ©èœããããã
boostã䜿çšããŠè§£ååºŠïŒæ¥ä»ïŒã®å€§éšåãå®è£
ãã
ãŸãïŒã°ã¬ãŽãªã¢ã³ ã ãã®ã³ã³ããŒãã³ãã¯ãæéãæ£ç¢ºã«ååŸããå¿
èŠãããã¿ã¹ã¯ïŒããšãã°ããã°ãã¡ã€ã«ã®ã¬ã³ãŒãè¡ïŒã«ç¹ã«äŸ¿å©ã§ãã æ¬¡ã®éšåã«åãããŠããŸãã
åéšåã®ç®çãåæããŸãããïŒ
boost :: posix_time :: ptime-é£ç¶æéã®ãã€ã³ãã衚ããŸãã
boost :: gregorianïŒdateãšéåžžã«ãã䌌ãŠã
ãŸããããã€ã¯ãç§ãŸã§ã®è§£å床ãæã¡ãŸãã
gregorianïŒdateã®ã¿ã§ã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ãäœæããå Žåããäœè§£å床ãéšåã¯æ·±å€ïŒãã¹ãŠãŒãïŒã«èšå®ãããŸãã
䜿çšäŸïŒ
ptime xTime(date(1961, Apr, 12), hours(9) + minutes(7));
std::cout << "Did you know that Gagrin said \"Poehali\" at " << xTime << "\n" ;
ptime xTimeStr( time_from_string( "1961-04-12 09.07.00.0000" ) );
std::cout << "And the same time point constructed from a string: " << xTimeStr << "\n" ;
std::cout << "Current time with second resolution: " << second_clock::local_time() << "\nAnd with microsecond:" << microsec_clock::local_time();
* This source code was highlighted with Source Code Highlighter .
çµè«ïŒ
1961幎4æ12æ¥09:07:00ã«ã®ã£ã°ãªã³ããããšããªããšèšã£ãããšããåç¥ã§ãã
ãããŠãæååããæ§ç¯ãããåãæç¹ïŒ1961-Apr-12 09:07:00
2çªç®ã®è§£å床ã§ã®çŸåšã®æå»ïŒ2009-Jul-29 16:41:51
ãããŠãã€ã¯ãç§ã§ïŒ2009-Jul-29 16ïŒ41ïŒ51.087000
boost :: posix_time :: time_duration-ç¹å®ã®æ¥ä»ã«çµã³ä»ããããŠããªãæéã衚ããŸãã ã©ã€ãã©ãªãŒãããã©ã«ãã§ãã¯ã
BOOST_DATE_TIME_POSIX_TIME_STD_CONFIGããã³ãã€ã¯ãç§ã§ã³ã³ãã€ã«ãããå Žåãæéã®æå€§è§£å床ã¯ããç§ã«å¶éãããŸãã çŸåšã®æéã«å«ãŸããç§æ°ããã€ã¯ãç§æ°ãããªç§æ°ãããç§æ°ïŒé©åãªã¢ã»ã³ããªã䜿çšïŒã®æ
å ±ããªããžã§ã¯ãããååŸã§ããŸãã
äŸïŒ
time_duration xTime(1,2,3);
std::cout << "Print time: " << xTime << "\n" ;
std::cout << "Print increased time: " << xTime + hours(3) + seconds(2) + minutes(6) + milliseconds(15) + microseconds(25) << "\n" ;
std::cout << "Print total seconds: " << xTime.total_seconds() << " milliseconds: " <<
xTime.total_milliseconds() << " microseconds: " << xTime.total_microseconds() << "\n" ;
* This source code was highlighted with Source Code Highlighter .
çµè«ïŒ
å°å·æéïŒ01:02:03
å°å·æéã®å¢å ïŒ04ïŒ08ïŒ05.015025
å°å·ã®åèšç§ïŒ3723ããªç§ïŒ3723000ãã€ã¯ãç§ïŒ3723000000
boost :: posix_time :: time_period-æéã衚ããŸããã¯ã©ã¹ã¯
gregorian :: date_periodã«äŒŒãŠããŸãããè§£å床ã¯äœããªããŸãã ã¯ã©ã¹ã®æ©èœã䜿çšãããšãééã®åºçŸïŒå«ãïŒïŒïŒã亀差ïŒäº€å·®ïŒïŒïŒãããã³ééã®é·ãïŒé·ãïŒïŒïŒãå®çŸ©ã§ããŸãã ãŸããééãæ¡å€§ïŒexpandïŒïŒïŒãã·ããïŒshiftïŒïŒïŒãçµåïŒmergeïŒïŒïŒããå¯èœæ§ããããŸãã
äŸïŒ
ptime xDoomsday( date(2012, Jan, 1) );
time_period xArmageddonLast(xDoomsday, hours(1));
time_period xChakNorrisSmoke(xDoomsday, minutes(1));
std::cout << "Doomsday was during: " << xArmageddonLast<< "\n" ;
std::cout << "Chak Norris was smoking at " << xChakNorrisSmoke << "\n" ;
std::cout << "Did Chak Norris smoke during Doomsday breathtaking?" << std::boolalpha <<xArmageddonLast.contains(xChakNorrisSmoke);
* This source code was highlighted with Source Code Highlighter .
çµè«ïŒ
çµæ«ã¯æ¬¡ã®æéã§ããïŒ[2012-Jan-01 00ïŒ00ïŒ00 / 2012-Jan-01 00ïŒ59ïŒ59.999999]
Chak Norrisã¯[2012-Jan-01 00ïŒ00ïŒ00 / 2012-Jan-01 00ïŒ00ïŒ59.999999]ã§å«ç
ããŠããŸãã
ãã£ã¯ããªã¹ã¯ãçµæ«ã®æ¯ãã®ããããªãšãã«ç
ãåºããŸãããïŒ
boost :: posix_time :: time_iterator- ïŒãããã誰ããæšæž¬ããããã«ïŒæéãšãšãã«å埩ããããã«èšèšãããŠããŸãã ãã®å埩åã®åªããæ©èœã¯ãå埩ã§äœ¿çšãããæéééãèšå®ããæ©èœã§ãã æéã®é£ç¶äœã®çŸåšã®ãã€ã³ããå埩ããšã«ã©ã®ããããã©ã®åäœã§å€åãããã äžæçãªåäœãšããŠã1æéããããç§ãŸã§ã®ãã¹ãŠã®åäœã䜿çšã§ããŸãïŒå¯Ÿå¿ãããã©ã°ã§åéãããå ŽåïŒ
å°ããªäŸãæããŸãããã
ptime xTime(date(2012, Jan, 1));
time_iterator xIt(xTime, hours(6));
std::cout << "6 hours after Domsday has come!!!" << *++xIt;
* This source code was highlighted with Source Code Highlighter .
çµè«ïŒ
Domsdayã®6æéåŸ!!! 2012-Jan-01 06:00:00
ãã®ã³ã³ããŒãã³ãã¯ãããŸããŸãªã¿ã€ã ãŸãŒã³ã§ã倿éã«åãæ¿ããããã®ããŸããŸãªã«ãŒã«ã§ãæéãæäœããæ©äŒãæäŸããŸãã ããã¯ããªã匷åã§å¿
èŠãªã³ã³ããŒãã³ãã§ãããç¹ã«éèŠãªã®ã¯çŸåšã®ïŒçŸå°ã®ïŒæéã ãã§ã¯ãªããæéã«é¢ããå°åã®åæïŒå€æéãã¿ã€ã ãŸãŒã³ãªã©ïŒã«åŸã£ãŠããŸããŸãªæéãªãã»ãããèæ
®ããããšãéèŠãªã¢ããªã±ãŒã·ã§ã³ã«å¿
èŠã§ãã ãã®ããããã®ã³ã³ããŒãã³ãã«å«ãŸããããŒãã®ãªã¹ããæäŸããŸãã
boost :: local_time :: posix_time_zoneã¯ãã¿ã€ã ãŸãŒã³ã衚ãããŒã¿ãšã«ãŒã«ã®ã»ããã§ãïŒGMTã«å¯Ÿãããªãã»ããã倿éã«ãŒã«ãã¿ã€ã ãŸãŒã³ã®ååãšãã®çç¥åœ¢ïŒã ãã®ã¿ã€ãã®ãªããžã§ã¯ãã¯ãæååã«åºã¥ããŠäœæãããŸã;æåå圢åŒã¯ãã¿ã€ã ãŸãŒã³çšã®æšæºåãããPOSIX圢åŒïŒIEEE Std 1003.1ïŒã§ãã
äžè¬çã«ããã®è¡ã¯æ¬¡ã®ããã«ãªããŸãã
stdãªãã»ããdst [ãªãã»ãã]ãéå§[/æé]ãçµäº[/æé]std-ã¿ã€ã ãŸãŒã³ã®ç¥èªã
offset -GMTã«å¯Ÿãããªãã»ããã
dst-ãµããŒã¿ã€ã äžã®ã¿ã€ã ãŸãŒã³ã®ç¥èªã
[ãªãã»ãã] -倿éã«åãæ¿ãããšãã«å€åããæéïŒæéåäœïŒã瀺ããŸãã ãªãã·ã§ã³ã®ãã©ã¡ãŒã¿ãŒã
éå§ãšçµäº -倿éã®ééãèšå®ããŸãã
[/ time] -倿éãå§ãŸãæ¥ããŸãã¯å€æéãç¡å¹ã«ãªãæ¥ã®æ£ç¢ºãªæéãèšå®ããŸãã
ãªãã»ãããš
æå»ã®åœ¢åŒã¯æ¬¡ã®ãšããã§ãã[+ |-] hh [ïŒmm [ïŒss]] {h = 0-23ãm / s = 0-59}
startãš
endã¯ã次ã®åœ¢åŒã®ããããã§è¡šãããšãã§ããŸãã
- Mm.wd {æ= 1ã12ãé±= 1ã5ïŒ5ã¯åžžã«æåŸã§ãïŒãæ¥= 0ã6}
- Jn {n = 1ã265 2æ29æ¥-èæ
®ãããŸãã}
- n {n = 0-365ããã幎ã®2æ29æ¥ãå«ã}
ãã®ã¯ã©ã¹ã®ã¡ãœããã䜿çšããŠããã®è¡ã®åéšåãåå¥ã«ååŸã§ããŸãã ããã«ååãä»ããçç±ã¯ãããŸããããããã¯éåžžã«éæã§ãç®çã®æ¬è³ªãåæ ããŠããã®ã§ããããã®ãªã¹ãã«ã€ããŠã¯ããã¥ã¡ã³ããåç
§ããŠãã ããã
äŸãšããŠãã¿ã€ã ãŸãŒã³GMT + 3ïŒã¢ã¹ã¯ã¯æéïŒã䜿çšããŸããã
posix_time_zone xZone( "MSK+3MSD+01,M3.5.0/02:00,M10.5.0/02:00" );
std::cout << "Dailight period in 2009 started at " << xZone.dst_local_start_time(2009) << "\nAnd it will finish at " << xZone.dst_local_end_time(2009);
* This source code was highlighted with Source Code Highlighter .
çµè«ïŒ
2009幎ã®ãã€ã©ã€ãæéã¯2009幎3æ29æ¥02:00:00ã«éå§ããŸãã
ãããŠã2009-Oct-25 02:00:00ã«çµäºããŸã
boost :: local_time :: tz_databaseã¯ãããŸããŸãªã¿ã€ã ãŸãŒã³ãæ ŒçŽããããã®äŸ¿å©ãªã¯ã©ã¹ã§ãã ãªããžã§ã¯ããäœæãããšã空ã®ããŒã¿ããŒã¹ãäœæããïŒãã¡ãã倧声ã§èšããš:)ïŒããã®åŸadd_recordïŒïŒã¡ãœããã䜿çšããŠæåã§å
¥åããããcsvïŒã«ã³ãåºåãå€ïŒãã¡ã€ã«ããèªã¿åãããšãã§ããŸãïŒå€æ°ã®ã¬ã³ãŒããæã€ãã®ãããªãã¡ã€ã«ã®äŸïŒ ïŒã¯ã
ïŒ
boostïŒ
\ libs \ date_time \ data \ date_time_zonespec.csvã«å«ãŸããŠã
ãŸããã®ãã¡ã€ã«å
ã®èšé²åœ¢åŒã¯ãæ¬¡ã®æšæºã«æºæ ããå¿
èŠããããŸãã
ãIDãããSTD ABBRãããSTD NAMEãããDST ABBRãããDST NAMEãããGMTãªãã»ãããããDST調æŽãããDSTéå§æ¥ã«ãŒã«ãããéå§æå»ãããDSTçµäºæ¥ãã«ãŒã« "ã"çµäºæé "
ã©ãã§ïŒ
ID-ç¹å®ã®ã¿ã€ã ãŸãŒã³ãäžæã«èå¥ããæååãå«ãŸããŸãã
STD ABBRãSTD NAMEãDST ABBRãDST NAME-ãããã®ãã£ãŒã«ãã«ã¯ãæšæºããã³å€æéã®ååãšç¥èªã®è¡ãå
¥åãããŸããå€ãã®å Žåãååãšç¥èªã¯åäžã§ãã
GMTãªãã»ãã -ã°ãªãããžãåºæºãšããæéãªãã»ããã ãã®åœ¢åŒã¯æ¬¡ã®ãšããã§ãã
{+ |-} hhïŒmm [ïŒss]DSTèª¿æŽ -倿éäžã®
GMTãªãã»ããã«å¯Ÿãã
ãªãã»ãã ã 圢åŒã¯
GMTãªãã»ãããšåãã§ãã
DSTéå§æ¥ã«ãŒã« -
倿éã®éå§ãéç¥ããå¹Žã®æ¥ã衚ãæååã ãŸããç¬èªã®åœ¢åŒããããŸãïŒç°ãªã圢åŒã¯ããã€ãããŸããïŒïŒïŒ
å¹³æ¥ãææ¥ãæ
ã©ãã§ïŒ
weekday-æ®éã®æ°åãã©ã®ã¢ã«ãŠã³ãã®æ¥ãæã«ãããã瀺ããŸãã
ææ¥ -ææ¥ã
æ -æã
äŸïŒ
-1; 0; 3-ãã·ã¢ã®ã倿éãã®å§ãŸãïŒ3æã®æçµæ¥ææ¥ïŒ
éå§æé -çå€äžä»¥éã®ã倿éããæå¹ã«ãªãæéã 圢åŒã¯
GMTãªãã»ãããšåãã§ãã
DSTçµäºæ¥ã«ãŒã« -
倿éã®çµäºãéç¥ããå¹Žã®æ¥ãèšè¿°ããæååã 圢åŒã¯
DSTéå§æ¥ã«ãŒã«ãšåãã§ãã
çµäºæé -ã倿éãã®çµäº
æã®ã¿ã®
éå§æéã®é¡äŒŒç©ã
äŸïŒ
tz_database xDb;
xDb.load_from_file( "G:\\Program files\\boost\\boost_1_39_0\\\libs\\date_time\\data\\date_time_zonespec.csv" );
const std::vector<std:: string >& xAllRegions = xDb.region_list();
std::cout << "Print first 10 zone IDs from the boost time zone file:" << std::endl;
for (std::vector<std:: string >::const_iterator it = xAllRegions.begin(); it != xAllRegions.begin() + 10; ++it)
std::cout << *it << std::endl;
std::cout << "And time when daylight saving was started at 2009: " << xDb.time_zone_from_region( "Europe/Moscow" )->dst_local_start_time(2009) << std::endl;
* This source code was highlighted with Source Code Highlighter .
çµè«ïŒ
ããŒã¹ãã¿ã€ã ãŸãŒã³ãã¡ã€ã«ã®æåã®10åã®ãŸãŒã³IDãåºåããŸãã
ã¢ããªã«/ã¢ããžã£ã³
ã¢ããªã«/ã¢ã¯ã©
ã¢ããªã«/ã¢ãã£ã¹ã¢ãã
ã¢ããªã«/ã¢ã«ãžã§
ã¢ããªã«/ã¢ã¹ã¡ã©
ã¢ããªã«/ããã³
ã¢ããªã«/ãã³ã®
ã¢ããªã«/ãã³ãžã¥ã«
ã¢ããªã«/ããµãŠ
ã¢ããªã«/ãã©ã³ã¿ã€ã¢
ãããŠã2009幎ã«å€æéãéå§ãããæéïŒ2009-Mar-29 02:00:00
boost :: local_time :: custom_time_zoneã¯ã¿ã€ã ãŸãŒã³ã®èª¬æãäœæããããã®ã¯ã©ã¹ã§ããã
åè¿°ã®boost :: local_time :: posix_time_zoneãšã¯ç°ãªãããã®ã¯ã©ã¹ã¯ã¿ã€ã ãŸãŒã³ãæ§ç¯ãããšãã«ä»ã®4ã€ã®ã¯ã©ã¹ã䜿çšããŸãã ã¯ã©ã¹ã¯ã
time_duration ã
time_zone_names ã
dst_adjustment_offsetsããã³
dst_calc_ruleã§ãã ã¯ã©ã¹ã¯ç®ç«ã£ããã®ã«ãã£ãŠåºå¥ãããªãããããã®äœ¿çšäŸãç°¡åã«ç€ºããŸãã
time_zone_names xNames( "Moscow Standart Time" , "MST" , "Moscow Daylight Time" , "MDT" );
time_duration xGMTOffset(3, 0, 0);
dst_adjustment_offsets xRulesOffsets( time_duration(1,0,0), time_duration(2,0,0), time_duration(3,0,0) );
//Mak daylight's rule
last_day_of_the_week_in_month xStartRule(Sunday, Mar);
last_day_of_the_week_in_month xEndRule(Sunday, Oct);
boost::shared_ptr<dst_calc_rule> xRules( new last_last_dst_rule(xStartRule, xEndRule) );
custom_time_zone xCustomTimeZone(xNames, xGMTOffset, xRulesOffsets, xRules);
std::cout << "The our time zone name is: " << xCustomTimeZone.std_zone_name() << "\n"
<< "It has an " << xCustomTimeZone.base_utc_offset() << " offset from GMT.\n"
<< "And daylight period will end at " << xCustomTimeZone.dst_local_end_time(2009) <<std::endl;
std::cout << "Posix string which represents our custom_time_zone object is:\n" << xCustomTimeZone.to_posix_string();
* This source code was highlighted with Source Code Highlighter .
çµè«ïŒ
ç§ãã¡ã®ã¿ã€ã ãŸãŒã³åã¯ïŒMoscow Standart Time
GMTããã®03:00:00ã®ãªãã»ããããããŸãã
ãŸãã倿éã¯2009幎10æ25æ¥03:00:00ã«çµäºããŸã
custom_time_zoneãªããžã§ã¯ãã衚ãPosixæååã¯æ¬¡ã®ãšããã§ãã
MST + 03MDT + 01ãM3.5.0 / 02ïŒ00ãM10.5.0 / 03ïŒ00
boost :: local_time :: local_date_timeããã³
boost :: local_time :: local_time_periodã¯ã©ã¹ã¯ã
boost :: posix_timeã®åæ§ã®ã¯ã©ã¹ãã¿ã€ã ãŸãŒã³ã«ãã€ã³ãããŠç¹°ãè¿ããŠããããããããã«ã€ããŠã¯æ€èšããŸããã
䟿å©ãªæ©èœãšçµè«
Boost.Data_timeã«ã¯ãæ¥ä»ãäœæããããã®ã¯ã©ã¹ã«å ããŠã次ã®ãããªäŸ¿å©ãªãŠãŒãã£ãªãã£ããããŸãã
ãã©ãŒããããããå
¥å/åºååŠçããã³
ã·ãªã¢ã«å ã ã©ã¡ãã®ã¡ã«ããºã ã䜿çšããã®ã¯éåžžã«ç°¡åã§ããããã®èšäºã®èª¬æã¯åé·ã§ãããšèããŠãããããéåžžã«èšå€§ã§ããããšã倿ããŸããã
çµè«ãšããŠãç§ã¯ãã®å Žæã§èªæžããã¹ã¿ãŒãããã¹ãŠã®äººã«æè¬ããããšæããŸãããŸãããããžã§ã¯ãã§Boost.Date_timeã䜿çšããŠå¹žéãç¥ããŸããããã䜿çšããããšããªã人ã«ããã®èšäºã圌ãã®äœ¿çšã奚å±ããããšãé¡ã£ãŠããŸãïŒãã§ã«å¥šå±ãããŠããŸãïŒ
PSãã®èšäºãæžãã®ã«1ã¶æè¿ãããããŸããããã£ãšé »ç¹ã«æžãããšãæãã§ããŸãã èšäºã§ééããèŠã€ããå Žåã¯ãPMã§ãç¥ãããã ããããã®ã³ã¡ã³ããè©°ãŸãããªãã§ãã ããã