12e5b6d6dSopenharmony_ci---
22e5b6d6dSopenharmony_cilayout: default
32e5b6d6dSopenharmony_cititle:  Date and Time Zone Examples
42e5b6d6dSopenharmony_cinav_order: 4
52e5b6d6dSopenharmony_ciparent: Date/Time
62e5b6d6dSopenharmony_ci---
72e5b6d6dSopenharmony_ci<!--
82e5b6d6dSopenharmony_ci© 2020 and later: Unicode, Inc. and others.
92e5b6d6dSopenharmony_ciLicense & terms of use: http://www.unicode.org/copyright.html
102e5b6d6dSopenharmony_ci-->
112e5b6d6dSopenharmony_ci
122e5b6d6dSopenharmony_ci# Date and Time Zone Examples
132e5b6d6dSopenharmony_ci{: .no_toc }
142e5b6d6dSopenharmony_ci
152e5b6d6dSopenharmony_ci## Contents
162e5b6d6dSopenharmony_ci{: .no_toc .text-delta }
172e5b6d6dSopenharmony_ci
182e5b6d6dSopenharmony_ci1. TOC
192e5b6d6dSopenharmony_ci{:toc}
202e5b6d6dSopenharmony_ci
212e5b6d6dSopenharmony_ci---
222e5b6d6dSopenharmony_ci
232e5b6d6dSopenharmony_ci## C++ TimeZone example code
242e5b6d6dSopenharmony_ci
252e5b6d6dSopenharmony_ciThis example code illustrates some time zone operations.
262e5b6d6dSopenharmony_ci
272e5b6d6dSopenharmony_ci```c++
282e5b6d6dSopenharmony_ci UErrorCode success = U_ZERO_ERROR;
292e5b6d6dSopenharmony_ci UnicodeString dateReturned, curTZNameEn, curTZNameFr;
302e5b6d6dSopenharmony_ci UDate curDate;
312e5b6d6dSopenharmony_ci int32_t stdOffset,dstOffset;
322e5b6d6dSopenharmony_ci
332e5b6d6dSopenharmony_ci // Create a Time Zone with America/Los_Angeles
342e5b6d6dSopenharmony_ci TimeZone *tzWest = TimeZone::createTimeZone("America/Los_Angeles");
352e5b6d6dSopenharmony_ci
362e5b6d6dSopenharmony_ci
372e5b6d6dSopenharmony_ci// Print out the Time Zone Name, GMT offset etc.
382e5b6d6dSopenharmony_ci curTZNameEn = tzWest->getDisplayName(Locale::getEnglish(),curTZNameEn);
392e5b6d6dSopenharmony_ci u_printf("%s\n","Current Time Zone Name in English:");
402e5b6d6dSopenharmony_ci u_printf("%S\n", curTZNameEn.getTerminatedBuffer());
412e5b6d6dSopenharmony_ci
422e5b6d6dSopenharmony_ci curTZNameFr = tzWest->getDisplayName(Locale::getCanadaFrench(),curTZNameFr);
432e5b6d6dSopenharmony_ci u_printf("%s\n","Current Time Zone Name in French:");
442e5b6d6dSopenharmony_ci u_printf("%S\n", curTZNameFr.getTerminatedBuffer());
452e5b6d6dSopenharmony_ci
462e5b6d6dSopenharmony_ci
472e5b6d6dSopenharmony_ci // Create a Calendar to get current date
482e5b6d6dSopenharmony_ci Calendar* calendar = Calendar::createInstance(success);
492e5b6d6dSopenharmony_ci curDate = calendar->getNow();
502e5b6d6dSopenharmony_ci
512e5b6d6dSopenharmony_ci
522e5b6d6dSopenharmony_ci // Print out the Current Date/Time in the given time zone
532e5b6d6dSopenharmony_ci DateFormat *dt = DateFormat::createDateInstance();
542e5b6d6dSopenharmony_ci dateReturned = dt->format(curDate,dateReturned,success);
552e5b6d6dSopenharmony_ci u_printf("%s\n", "Current Time:");
562e5b6d6dSopenharmony_ci u_printf("%S\n", dateReturned.getTerminatedBuffer());
572e5b6d6dSopenharmony_ci
582e5b6d6dSopenharmony_ci
592e5b6d6dSopenharmony_ci // Use getOffset to get the stdOffset and dstOffset for the given time
602e5b6d6dSopenharmony_ci tzWest->getOffset(curDate,true,stdOffset,dstOffset,success);
612e5b6d6dSopenharmony_ci u_printf("%s\n%d\n","Current Time Zone STD offset:",stdOffset/(1000*60*60));
622e5b6d6dSopenharmony_ci u_printf("%s\n%d\n","Current Time Zone DST offset:",dstOffset/(1000*60*60));
632e5b6d6dSopenharmony_ci u_printf("%s\n", "Current date/time is in daylight savings time?");
642e5b6d6dSopenharmony_ci u_printf("%s\n", (calendar->inDaylightTime(success))?"Yes":"No");
652e5b6d6dSopenharmony_ci
662e5b6d6dSopenharmony_ci
672e5b6d6dSopenharmony_ci // Use createTimeZoneIDEnumeration to get the specific Time Zone IDs
682e5b6d6dSopenharmony_ci // in United States with -5 hour standard offset from GMT
692e5b6d6dSopenharmony_ci stdOffset = (-5)*U_MILLIS_PER_HOUR; // U_MILLIS_PER_HOUR = 60*60*1000;
702e5b6d6dSopenharmony_ci StringEnumeration *ids = TimeZone::createTimeZoneIDEnumeration(UCAL_ZONE_TYPE_CANONICAL_LOCATION,"US",&stdOffset,success);
712e5b6d6dSopenharmony_ci for (int i=0; i<ids->count(success);i++) {
722e5b6d6dSopenharmony_ci   u_printf("%s\n",ids->next(NULL,success));
732e5b6d6dSopenharmony_ci }
742e5b6d6dSopenharmony_ci
752e5b6d6dSopenharmony_ci
762e5b6d6dSopenharmony_ci // Use Calendar to get the hour of the day for different time zones
772e5b6d6dSopenharmony_ci int32_t hour1,hour2;
782e5b6d6dSopenharmony_ci TimeZone *tzEast = TimeZone::createTimeZone("America/New_York");
792e5b6d6dSopenharmony_ci Calendar * cal1 = Calendar::createInstance(tzWest,success);
802e5b6d6dSopenharmony_ci Calendar * cal2 = Calendar::createInstance(tzEast,success);
812e5b6d6dSopenharmony_ci hour1 = cal1->get(UCAL_HOUR_OF_DAY,success);
822e5b6d6dSopenharmony_ci hour2 = cal2->get(UCAL_HOUR_OF_DAY,success);
832e5b6d6dSopenharmony_ci u_printf("%s\n%d\n","Current hour of the day in North American West: ", hour1);
842e5b6d6dSopenharmony_ci u_printf("%s\n%d\n","Current hour of the day in North American East: ", hour2);
852e5b6d6dSopenharmony_ci
862e5b6d6dSopenharmony_ci delete cal1;
872e5b6d6dSopenharmony_ci delete cal2;
882e5b6d6dSopenharmony_ci delete ids;
892e5b6d6dSopenharmony_ci delete calendar;
902e5b6d6dSopenharmony_ci delete dt;
912e5b6d6dSopenharmony_ci ```
92