码迷,mamicode.com
首页 > 其他好文 > 详细

DateAndTime

时间:2014-12-18 11:36:34      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:style   blog   ar   io   color   os   sp   for   on   

  1 //DatesAndTime.cpp
  2 
  3 /*
  4 Copyright 2000-2004 The VCF Project.
  5 Please see License.txt in the top level directory
  6 where you installed the VCF.
  7 */
  8 
  9 
 10 #include "vcf/FoundationKit/FoundationKit.h"
 11 
 12 /**
 13 include the DateTime header - this must come *after* your include
 14 of the FoundationKit.
 15 */
 16 #include "vcf/FoundationKit/DateTime.h"
 17 
 18 
 19 
 20 using namespace VCF;
 21 
 22 int main( int argc, char** argv ){
 23 
 24     FoundationKit::init( argc, argv );
 25 
 26     /**
 27     retrieve the current time
 28     */
 29     DateTime currentTime = DateTime::now();
 30 
 31     /**
 32     Output the date time instance using the Object::toString method
 33     */
 34 
 35     String timeStr = currentTime.toString();
 36     System::println( Format("currentTime: %ls") % timeStr.c_str() );
 37 
 38 
 39     /**
 40     Modify the date
 41     */
 42 
 43     currentTime.setDate( 2012, 11, 23 );
 44 
 45     /**
 46     Output the date time instance using the StringUtils::format() method
 47     */
 48 
 49     System::println( Format("currentTime from StringUtils::format():\n\t%ls")
 50                     % StringUtils::format( currentTime, "Day %#j in the year %Y, week %#U, %A day %#d of %B month %#m" ).c_str() );
 51 
 52     /**
 53     Output the time portion of the date time instance using the StringUtils::format() method
 54     */
 55 
 56     System::println( Format("currentTime from StringUtils::format():\n\t%ls")
 57                     % StringUtils::format( currentTime, "%H:%M:%S.%s" ).c_str() );
 58 
 59     /**
 60     Modify the time, hours, minutes and seconds
 61     */
 62     currentTime.setTime( 9, 45, 12 );
 63 
 64     System::println( Format("currentTime from StringUtils::format():\n\t%ls")
 65                     % StringUtils::format( currentTime, "%H:%M:%S.%s" ).c_str() );
 66 
 67 
 68     /**
 69     Modify the date and time in one call - this allows for milliseconds resolutions
 70     */
 71     currentTime.set( 1982, 5, 21, 18, 23, 10, 456 );
 72 
 73     System::println( Format("currentTime from StringUtils::format():\n\t%ls")
 74                     % StringUtils::format( currentTime, "%Y/%m/%d-%H:%M:%S.%s" ).c_str() );
 75 
 76 
 77     /**
 78     Demonstrate what happens when setting the date/time with bad data
 79     */
 80     try {
 81         currentTime.setDate( 2003, 45, 12 );
 82     }
 83     catch ( std::exception& e ) {
 84         System::println( Format("Setting the date/time failed due to : %s") % e.what() );
 85     }
 86 
 87     try {
 88         currentTime.setTime( 2003, 45, 12 );
 89     }
 90     catch ( std::exception& e ) {
 91         System::println( Format("Setting the date/time failed due to : %s") % e.what() );
 92     }
 93 
 94     DateTime dt1(2003,12,23);
 95     DateTime dt2(2003,12,23);
 96 
 97     /**
 98     Compare a date
 99     */
100 
101     if ( dt1 == dt2 ) {
102         System::println( Format("Date {%ls} equals date {%ls}")
103                         % dt1.toString().c_str() % dt2.toString().c_str() );
104     }
105 
106     /**
107     increment the dates value
108     */
109     dt2.incrHour( 10 );
110 
111     if ( dt1 < dt2 ) {
112         System::println( Format("Date {%ls} is earlier than date {%ls}")
113                         % dt1.toString().c_str() % dt2.toString().c_str() );
114     }
115 
116     /**
117     decrement the dates value
118     */
119     dt2.decrYear( 10 );
120 
121     if ( dt1 > dt2 ) {
122         System::println( Format("Date {%ls} is later than date {%ls}")
123                         % dt1.toString().c_str() % dt2.toString().c_str() );
124     }
125 
126 
127     /**
128     Iterate dates given a starting point
129     */
130     DateTime xmas2002(2002, 12, 25);
131     DateTime::Iterator<ByYear> iterator = xmas2002;
132     while ( *iterator != DateTime(2012, 12, 25) ) {
133         System::println( StringUtils::format( *iterator, "Christmas is on a %A in %Y" ) );
134         iterator ++;
135     }
136 
137     DateTime dt3(1998, 8, 1, 16, 30, 0 );
138     DateTime now = DateTime::now();
139 
140     DateTimeSpan howLong = dt3 - now;
141 
142 
143     System::println( Format("Holy cow! I‘ve been married for:\n\t%d years, %d months, %d days, %d hours, and %d minutes,\n\tor for a total of %s seconds!")
144                     %    howLong.getYears()
145                     %    howLong.getMonths()
146                     %    howLong.getDays()
147                     %    howLong.getHours()
148                     %    howLong.getMinutes()
149                     %    System::getCurrentThreadLocale()->toString( howLong.getTotalSeconds() ) );
150 
151 
152     dt3.setMilliseconds( 0 );
153     howLong = now - dt3;
154     System::println( Format("now() - 0:\n\t%d years, %d months, %d days, %d hours, and %d minutes,\n\tor for a total of %s seconds!")
155                     %    howLong.getYears()
156                     %    howLong.getMonths()
157                     %    howLong.getDays()
158                     %    howLong.getHours()
159                     %    howLong.getMinutes()
160                     %    System::getCurrentThreadLocale()->toString( howLong.getTotalSeconds() ) );
161 
162     DateTimeSpan period1( 0 );
163     System::print( Format("period1( %d ): " ) % period1.getTotalMilliseconds() );
164     howLong = period1;
165     System::println( Format("\n\t%d years, %d months, %d days, %d hours, and %d minutes,\n\tor for a total of %s seconds!")
166                     %    howLong.getYears()
167                     %    howLong.getMonths()
168                     %    howLong.getDays()
169                     %    howLong.getHours()
170                     %    howLong.getMinutes()
171                     %    System::getCurrentThreadLocale()->toString( howLong.getTotalSeconds() ) );
172     
173     DateTimeSpan period2( 1000000 );
174     System::print( Format("period2( %d ): " ) % period2.getTotalMilliseconds() );
175     howLong = period2;
176     System::println( Format("\n\t%d years, %d months, %d days, %d hours, and %d minutes,\n\tor for a total of %s seconds!")
177                     %    howLong.getYears()
178                     %    howLong.getMonths()
179                     %    howLong.getDays()
180                     %    howLong.getHours()
181                     %    howLong.getMinutes()
182                     %    System::getCurrentThreadLocale()->toString( howLong.getTotalSeconds() ) );
183 
184 
185     /**
186     The following demonstrates how to save a date to a output stream
187     and how to read it back in from an input stream. These
188     show how to read/write the date time as an object, obviously
189     there are alternate ways of store it.
190     */
191 
192     DateTime storeMe( 1977, 10, 3, 19, 23, 12 );
193 
194     {
195         FileOutputStream fs( "datetime.out" );
196 
197         fs << &storeMe;
198 
199         System::println( Format("storeMe (%ls) saved!")%  storeMe.toString().c_str() );
200     }
201 
202     DateTime loadMe;
203     System::println( Format("loadMe is equal to %s") % loadMe.toString() );
204 
205     {
206         FileInputStream fs( "datetime.out" );
207 
208         fs >> static_cast<VCF::Persistable*>(&loadMe);
209 
210         System::println( Format("loadMe (%s) loaded!") % loadMe.toString() );
211     }
212 
213 
214     FoundationKit::terminate();
215     return 0;
216 }
217 
218 
219 /**
220 $Id: DatesAndTime.cpp 2977 2007-01-04 14:59:37Z kdmix $
221 */

 

DateAndTime

标签:style   blog   ar   io   color   os   sp   for   on   

原文地址:http://www.cnblogs.com/elitiwin/p/4171126.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!