16f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/******************************************************************************** 26f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Copyright (C) 2008-2013, International Business Machines Corporation and 36f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* others. All Rights Reserved. 46f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org******************************************************************************* 56f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*/ 66f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org//! [dtitvfmtPreDefined1] 76f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include <iostream> 86f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/dtitvfmt.h" 96f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/ustdio.h" 106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org//! [dtitvfmtPreDefined1] 116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgusing namespace std; 136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgstatic void dtitvfmtPreDefined() { 156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org u_printf("===============================================================================\n"); 176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org u_printf(" dtitvfmtPreDefined()\n"); 186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org u_printf("\n"); 196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org u_printf(" Use DateIntervalFormat to get date interval format for pre-defined skeletons:\n"); 206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org u_printf(" yMMMd, MMMMd, jm per locale\n"); 216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org u_printf("===============================================================================\n"); 226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org //! [dtitvfmtPreDefined] 246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UFILE *out = u_finit(stdout, NULL, "UTF-8"); 256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode status =U_ZERO_ERROR; 266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // create 3 Date Intervals 276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString data[] = { 286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString("2007-10-10 10:10:10"), 296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString("2008-10-10 10:10:10"), 306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString("2008-11-10 10:10:10"), 316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString("2008-11-10 15:10:10") 326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org }; 336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org Calendar *cal = Calendar::createInstance(status); 346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org cal->set(2007,10,10,10,10,10); 356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UDate date1 = cal->getTime(status); 366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org cal->set(2008,10,10,10,10,10); 376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UDate date2 = cal->getTime(status); 386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org cal->set(2008,11,10,10,10,10); 396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UDate date3 = cal->getTime(status); 406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org cal->set(2008,11,10,15,10,10); 416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UDate date4 = cal->getTime(status); 426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org DateInterval* dtitvsample[] = { 436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new DateInterval(date1,date2), 446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new DateInterval(date2,date3), 456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new DateInterval(date3,date4), 466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org }; 476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString skeletons[] = { 486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString("yMMMd"), 496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString("MMMMd"), 506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString("jm"), 516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 0, 526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org }; 536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org u_fprintf(out,"%-10s%-22s%-22s%-35s%-35s\n", "Skeleton","from","to","Date Interval in en_US","Date Interval in Ja"); 546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int i=0; 556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString formatEn,formatJa; 566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org FieldPosition pos=0; 576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org for (int j=0;skeletons[j]!=NULL ;j++) { 586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org u_fprintf(out,"%-10S%-22S%-22S",skeletons[j].getTerminatedBuffer(),data[i].getTerminatedBuffer(),data[i+1].getTerminatedBuffer()); 596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org //create a DateIntervalFormat instance for given skeleton, locale 606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org DateIntervalFormat* dtitvfmtEn = DateIntervalFormat::createInstance(skeletons[j], Locale::getEnglish(),status); 616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org DateIntervalFormat* dtitvfmtJa = DateIntervalFormat::createInstance(skeletons[j], Locale::getJapanese(),status); 626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org formatEn.remove(); 636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org formatJa.remove(); 646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org //get the DateIntervalFormat 656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org dtitvfmtEn->format(dtitvsample[i],formatEn,pos,status); 666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org dtitvfmtJa->format(dtitvsample[i],formatJa,pos,status); 676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org u_fprintf(out,"%-35S%-35S\n", formatEn.getTerminatedBuffer(),formatJa.getTerminatedBuffer()); 686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org delete dtitvfmtEn; 696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org delete dtitvfmtJa; 706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org i++; 716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org u_fclose(out); 736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org //! [dtitvfmtPreDefined] 746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/* output of the sample code: 756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ********************************************************************************************************************************************************* 766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org Skeleton from to Date Interval in en_US Date Interval in Ja 776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org yMMMd 2007-10-10 10:10:10 2008-10-10 10:10:10 Nov 10, 2007 – Nov 10, 2008 2007年11月10日~2008年11月10日 786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org MMMMd 2008-10-10 10:10:10 2008-11-10 10:10:10 November 10 – December 10 11月10日~12月10日 796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org jm 2008-11-10 10:10:10 2008-11-10 15:10:10 10:10 AM – 3:10 PM 10:10~15:10 806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org *********************************************************************************************************************************************************/ 826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgstatic void dtitvfmtCustomized() { 856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org u_printf("===============================================================================\n"); 876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org u_printf("\n"); 886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org u_printf(" dtitvfmtCustomized()\n"); 896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org u_printf("\n"); 906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org u_printf(" Use DateIntervalFormat to create customized date interval format for yMMMd, Hm"); 916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org u_printf("\n"); 926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org u_printf("================================================================================\n"); 936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org //! [dtitvfmtCustomized] 946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UFILE *out = u_finit(stdout, NULL, "UTF-8"); 956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode status =U_ZERO_ERROR; 966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString data[] = { 976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString("2007-9-10 10:10:10"), 986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString("2007-10-10 10:10:10"), 996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString("2007-10-10 22:10:10") 1006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org }; 1016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // to create 2 Date Intervals 1026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org Calendar *cal1 = Calendar::createInstance(status); 1036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org cal1->set(2007,9,10,10,10,10); 1046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org Calendar *cal2 = Calendar::createInstance(status); 1056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org cal2->set(2007,10,10,10,10,10); 1066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org Calendar *cal3 = Calendar::createInstance(status); 1076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org cal3->set(2007,10,10,22,10,10); 1086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org DateInterval* dtitvsample[] = { 1096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new DateInterval(cal1->getTime(status),cal2->getTime(status)), 1106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new DateInterval(cal2->getTime(status),cal3->getTime(status)) 1116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org }; 1126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString skeletons[] = { 1136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString("yMMMd"), 1146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString("Hm"), 1156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 0, 1166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org }; 1176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org u_printf("%-10s%-22s%-22s%-45s%-35s\n", "Skeleton", "from","to", "Date Interval in en_US","Date Interval in Ja"); 1186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // Create an empty DateIntervalInfo object 1196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org DateIntervalInfo dtitvinf = DateIntervalInfo(status); 1206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // Set Date Time internal pattern for MONTH, HOUR_OF_DAY 1216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org dtitvinf.setIntervalPattern("yMMMd", UCAL_MONTH, "y 'Diff' MMM d --- MMM d",status); 1226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org dtitvinf.setIntervalPattern("Hm", UCAL_HOUR_OF_DAY, "yyyy MMM d HH:mm ~ HH:mm",status); 1236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // Set fallback interval pattern 1246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org dtitvinf.setFallbackIntervalPattern("{0} ~~~ {1}",status); 1256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // Get the DateIntervalFormat with the custom pattern 1266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString formatEn,formatJa; 1276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org FieldPosition pos=0; 1286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org for (int i=0;i<2;i++){ 1296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org for (int j=0;skeletons[j]!=NULL;j++) { 1306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org u_fprintf(out,"%-10S%-22S%-22S", skeletons[i].getTerminatedBuffer(),data[j].getTerminatedBuffer(), data[j+1].getTerminatedBuffer()); 1316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org DateIntervalFormat* dtitvfmtEn = DateIntervalFormat::createInstance(skeletons[i],Locale::getEnglish(),dtitvinf,status); 1326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org DateIntervalFormat* dtitvfmtJa = DateIntervalFormat::createInstance(skeletons[i],Locale::getJapanese(),dtitvinf,status); 1336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org formatEn.remove(); 1346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org formatJa.remove(); 1356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org dtitvfmtEn->format(dtitvsample[j],formatEn,pos,status); 1366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org dtitvfmtJa->format(dtitvsample[j],formatJa,pos,status); 1376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org u_fprintf(out,"%-45S%-35S\n", formatEn.getTerminatedBuffer(),formatJa.getTerminatedBuffer()); 1386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 1396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 1406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org u_fclose(out); 1416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org //! [dtitvfmtCustomized] 1426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/* output of the sample code: 1436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org *************************************************************************************************************************************************************** 1446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org Skeleton from to Date Interval in en_US Date Interval in Ja 1456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org yMMMd 2007-10-10 10:10:10 2007-11-10 10:10:10 2007 Diff Oct 10 --- Nov 10 2007 Diff 10月 10 --- 11月 10 1466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org yMMMd 2007-11-10 10:10:10 2007-11-10 22:10:10 Nov 10, 2007 2007年11月10 1476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org Hm 2007-10-10 10:10:10 2007-11-10 10:10:10 10/10/2007, 10:10 ~~~ 11/10/2007, 10:10 2007/10/10 10:10 ~~~ 2007/11/10 10:10 1486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org Hm 2007-11-10 10:10:10 2007-11-10 22:10:10 2007 Nov 10 10:10 ~ 22:10 2007 11月 10 10:10 ~ 22:10 1496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ***************************************************************************************************************************************************************/ 1506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 1516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgint main (int argc, char* argv[]) 1536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 1546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org dtitvfmtPreDefined(); 1556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org dtitvfmtCustomized(); 1566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return 0; 1576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}