1fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius/****************************************************************************** 2fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius* Copyright (C) 2008-2014, International Business Machines Corporation and 359d709d503bab6e2b61931737e662dd293b40578ccornelius* others. All Rights Reserved. 459d709d503bab6e2b61931737e662dd293b40578ccornelius******************************************************************************* 559d709d503bab6e2b61931737e662dd293b40578ccornelius*/ 659d709d503bab6e2b61931737e662dd293b40578ccornelius//! [dtitvfmtPreDefined1] 759d709d503bab6e2b61931737e662dd293b40578ccornelius#include <iostream> 859d709d503bab6e2b61931737e662dd293b40578ccornelius#include "unicode/dtitvfmt.h" 959d709d503bab6e2b61931737e662dd293b40578ccornelius#include "unicode/ustdio.h" 1059d709d503bab6e2b61931737e662dd293b40578ccornelius//! [dtitvfmtPreDefined1] 1159d709d503bab6e2b61931737e662dd293b40578ccornelius 1259d709d503bab6e2b61931737e662dd293b40578ccorneliususing namespace std; 1359d709d503bab6e2b61931737e662dd293b40578ccornelius 1459d709d503bab6e2b61931737e662dd293b40578ccorneliusstatic void dtitvfmtPreDefined() { 1559d709d503bab6e2b61931737e662dd293b40578ccornelius 1659d709d503bab6e2b61931737e662dd293b40578ccornelius u_printf("===============================================================================\n"); 1759d709d503bab6e2b61931737e662dd293b40578ccornelius u_printf(" dtitvfmtPreDefined()\n"); 1859d709d503bab6e2b61931737e662dd293b40578ccornelius u_printf("\n"); 1959d709d503bab6e2b61931737e662dd293b40578ccornelius u_printf(" Use DateIntervalFormat to get date interval format for pre-defined skeletons:\n"); 2059d709d503bab6e2b61931737e662dd293b40578ccornelius u_printf(" yMMMd, MMMMd, jm per locale\n"); 2159d709d503bab6e2b61931737e662dd293b40578ccornelius u_printf("===============================================================================\n"); 2259d709d503bab6e2b61931737e662dd293b40578ccornelius 2359d709d503bab6e2b61931737e662dd293b40578ccornelius //! [dtitvfmtPreDefined] 2459d709d503bab6e2b61931737e662dd293b40578ccornelius UFILE *out = u_finit(stdout, NULL, "UTF-8"); 2559d709d503bab6e2b61931737e662dd293b40578ccornelius UErrorCode status =U_ZERO_ERROR; 2659d709d503bab6e2b61931737e662dd293b40578ccornelius // create 3 Date Intervals 2759d709d503bab6e2b61931737e662dd293b40578ccornelius UnicodeString data[] = { 2859d709d503bab6e2b61931737e662dd293b40578ccornelius UnicodeString("2007-10-10 10:10:10"), 2959d709d503bab6e2b61931737e662dd293b40578ccornelius UnicodeString("2008-10-10 10:10:10"), 3059d709d503bab6e2b61931737e662dd293b40578ccornelius UnicodeString("2008-11-10 10:10:10"), 3159d709d503bab6e2b61931737e662dd293b40578ccornelius UnicodeString("2008-11-10 15:10:10") 3259d709d503bab6e2b61931737e662dd293b40578ccornelius }; 3359d709d503bab6e2b61931737e662dd293b40578ccornelius Calendar *cal = Calendar::createInstance(status); 3459d709d503bab6e2b61931737e662dd293b40578ccornelius cal->set(2007,10,10,10,10,10); 3559d709d503bab6e2b61931737e662dd293b40578ccornelius UDate date1 = cal->getTime(status); 3659d709d503bab6e2b61931737e662dd293b40578ccornelius cal->set(2008,10,10,10,10,10); 3759d709d503bab6e2b61931737e662dd293b40578ccornelius UDate date2 = cal->getTime(status); 3859d709d503bab6e2b61931737e662dd293b40578ccornelius cal->set(2008,11,10,10,10,10); 3959d709d503bab6e2b61931737e662dd293b40578ccornelius UDate date3 = cal->getTime(status); 4059d709d503bab6e2b61931737e662dd293b40578ccornelius cal->set(2008,11,10,15,10,10); 4159d709d503bab6e2b61931737e662dd293b40578ccornelius UDate date4 = cal->getTime(status); 4259d709d503bab6e2b61931737e662dd293b40578ccornelius DateInterval* dtitvsample[] = { 4359d709d503bab6e2b61931737e662dd293b40578ccornelius new DateInterval(date1,date2), 4459d709d503bab6e2b61931737e662dd293b40578ccornelius new DateInterval(date2,date3), 4559d709d503bab6e2b61931737e662dd293b40578ccornelius new DateInterval(date3,date4), 4659d709d503bab6e2b61931737e662dd293b40578ccornelius }; 4759d709d503bab6e2b61931737e662dd293b40578ccornelius UnicodeString skeletons[] = { 4859d709d503bab6e2b61931737e662dd293b40578ccornelius UnicodeString("yMMMd"), 4959d709d503bab6e2b61931737e662dd293b40578ccornelius UnicodeString("MMMMd"), 5059d709d503bab6e2b61931737e662dd293b40578ccornelius UnicodeString("jm"), 5159d709d503bab6e2b61931737e662dd293b40578ccornelius 0, 5259d709d503bab6e2b61931737e662dd293b40578ccornelius }; 5359d709d503bab6e2b61931737e662dd293b40578ccornelius u_fprintf(out,"%-10s%-22s%-22s%-35s%-35s\n", "Skeleton","from","to","Date Interval in en_US","Date Interval in Ja"); 5459d709d503bab6e2b61931737e662dd293b40578ccornelius int i=0; 5559d709d503bab6e2b61931737e662dd293b40578ccornelius UnicodeString formatEn,formatJa; 5659d709d503bab6e2b61931737e662dd293b40578ccornelius FieldPosition pos=0; 5759d709d503bab6e2b61931737e662dd293b40578ccornelius for (int j=0;skeletons[j]!=NULL ;j++) { 5859d709d503bab6e2b61931737e662dd293b40578ccornelius u_fprintf(out,"%-10S%-22S%-22S",skeletons[j].getTerminatedBuffer(),data[i].getTerminatedBuffer(),data[i+1].getTerminatedBuffer()); 5959d709d503bab6e2b61931737e662dd293b40578ccornelius //create a DateIntervalFormat instance for given skeleton, locale 6059d709d503bab6e2b61931737e662dd293b40578ccornelius DateIntervalFormat* dtitvfmtEn = DateIntervalFormat::createInstance(skeletons[j], Locale::getEnglish(),status); 6159d709d503bab6e2b61931737e662dd293b40578ccornelius DateIntervalFormat* dtitvfmtJa = DateIntervalFormat::createInstance(skeletons[j], Locale::getJapanese(),status); 6259d709d503bab6e2b61931737e662dd293b40578ccornelius formatEn.remove(); 6359d709d503bab6e2b61931737e662dd293b40578ccornelius formatJa.remove(); 6459d709d503bab6e2b61931737e662dd293b40578ccornelius //get the DateIntervalFormat 6559d709d503bab6e2b61931737e662dd293b40578ccornelius dtitvfmtEn->format(dtitvsample[i],formatEn,pos,status); 6659d709d503bab6e2b61931737e662dd293b40578ccornelius dtitvfmtJa->format(dtitvsample[i],formatJa,pos,status); 6759d709d503bab6e2b61931737e662dd293b40578ccornelius u_fprintf(out,"%-35S%-35S\n", formatEn.getTerminatedBuffer(),formatJa.getTerminatedBuffer()); 6859d709d503bab6e2b61931737e662dd293b40578ccornelius delete dtitvfmtEn; 6959d709d503bab6e2b61931737e662dd293b40578ccornelius delete dtitvfmtJa; 7059d709d503bab6e2b61931737e662dd293b40578ccornelius i++; 7159d709d503bab6e2b61931737e662dd293b40578ccornelius } 7259d709d503bab6e2b61931737e662dd293b40578ccornelius u_fclose(out); 7359d709d503bab6e2b61931737e662dd293b40578ccornelius //! [dtitvfmtPreDefined] 7459d709d503bab6e2b61931737e662dd293b40578ccornelius} 7559d709d503bab6e2b61931737e662dd293b40578ccornelius 7659d709d503bab6e2b61931737e662dd293b40578ccorneliusstatic void dtitvfmtCustomized() { 7759d709d503bab6e2b61931737e662dd293b40578ccornelius 7859d709d503bab6e2b61931737e662dd293b40578ccornelius u_printf("===============================================================================\n"); 7959d709d503bab6e2b61931737e662dd293b40578ccornelius u_printf("\n"); 8059d709d503bab6e2b61931737e662dd293b40578ccornelius u_printf(" dtitvfmtCustomized()\n"); 8159d709d503bab6e2b61931737e662dd293b40578ccornelius u_printf("\n"); 8259d709d503bab6e2b61931737e662dd293b40578ccornelius u_printf(" Use DateIntervalFormat to create customized date interval format for yMMMd, Hm"); 8359d709d503bab6e2b61931737e662dd293b40578ccornelius u_printf("\n"); 8459d709d503bab6e2b61931737e662dd293b40578ccornelius u_printf("================================================================================\n"); 8559d709d503bab6e2b61931737e662dd293b40578ccornelius //! [dtitvfmtCustomized] 8659d709d503bab6e2b61931737e662dd293b40578ccornelius UFILE *out = u_finit(stdout, NULL, "UTF-8"); 8759d709d503bab6e2b61931737e662dd293b40578ccornelius UErrorCode status =U_ZERO_ERROR; 8859d709d503bab6e2b61931737e662dd293b40578ccornelius UnicodeString data[] = { 8959d709d503bab6e2b61931737e662dd293b40578ccornelius UnicodeString("2007-9-10 10:10:10"), 9059d709d503bab6e2b61931737e662dd293b40578ccornelius UnicodeString("2007-10-10 10:10:10"), 9159d709d503bab6e2b61931737e662dd293b40578ccornelius UnicodeString("2007-10-10 22:10:10") 9259d709d503bab6e2b61931737e662dd293b40578ccornelius }; 9359d709d503bab6e2b61931737e662dd293b40578ccornelius // to create 2 Date Intervals 9459d709d503bab6e2b61931737e662dd293b40578ccornelius Calendar *cal1 = Calendar::createInstance(status); 9559d709d503bab6e2b61931737e662dd293b40578ccornelius cal1->set(2007,9,10,10,10,10); 9659d709d503bab6e2b61931737e662dd293b40578ccornelius Calendar *cal2 = Calendar::createInstance(status); 9759d709d503bab6e2b61931737e662dd293b40578ccornelius cal2->set(2007,10,10,10,10,10); 9859d709d503bab6e2b61931737e662dd293b40578ccornelius Calendar *cal3 = Calendar::createInstance(status); 9959d709d503bab6e2b61931737e662dd293b40578ccornelius cal3->set(2007,10,10,22,10,10); 10059d709d503bab6e2b61931737e662dd293b40578ccornelius DateInterval* dtitvsample[] = { 10159d709d503bab6e2b61931737e662dd293b40578ccornelius new DateInterval(cal1->getTime(status),cal2->getTime(status)), 10259d709d503bab6e2b61931737e662dd293b40578ccornelius new DateInterval(cal2->getTime(status),cal3->getTime(status)) 10359d709d503bab6e2b61931737e662dd293b40578ccornelius }; 10459d709d503bab6e2b61931737e662dd293b40578ccornelius UnicodeString skeletons[] = { 10559d709d503bab6e2b61931737e662dd293b40578ccornelius UnicodeString("yMMMd"), 10659d709d503bab6e2b61931737e662dd293b40578ccornelius UnicodeString("Hm"), 10759d709d503bab6e2b61931737e662dd293b40578ccornelius 0, 10859d709d503bab6e2b61931737e662dd293b40578ccornelius }; 10959d709d503bab6e2b61931737e662dd293b40578ccornelius u_printf("%-10s%-22s%-22s%-45s%-35s\n", "Skeleton", "from","to", "Date Interval in en_US","Date Interval in Ja"); 11059d709d503bab6e2b61931737e662dd293b40578ccornelius // Create an empty DateIntervalInfo object 11159d709d503bab6e2b61931737e662dd293b40578ccornelius DateIntervalInfo dtitvinf = DateIntervalInfo(status); 11259d709d503bab6e2b61931737e662dd293b40578ccornelius // Set Date Time internal pattern for MONTH, HOUR_OF_DAY 11359d709d503bab6e2b61931737e662dd293b40578ccornelius dtitvinf.setIntervalPattern("yMMMd", UCAL_MONTH, "y 'Diff' MMM d --- MMM d",status); 11459d709d503bab6e2b61931737e662dd293b40578ccornelius dtitvinf.setIntervalPattern("Hm", UCAL_HOUR_OF_DAY, "yyyy MMM d HH:mm ~ HH:mm",status); 11559d709d503bab6e2b61931737e662dd293b40578ccornelius // Set fallback interval pattern 11659d709d503bab6e2b61931737e662dd293b40578ccornelius dtitvinf.setFallbackIntervalPattern("{0} ~~~ {1}",status); 11759d709d503bab6e2b61931737e662dd293b40578ccornelius // Get the DateIntervalFormat with the custom pattern 11859d709d503bab6e2b61931737e662dd293b40578ccornelius UnicodeString formatEn,formatJa; 11959d709d503bab6e2b61931737e662dd293b40578ccornelius FieldPosition pos=0; 12059d709d503bab6e2b61931737e662dd293b40578ccornelius for (int i=0;i<2;i++){ 12159d709d503bab6e2b61931737e662dd293b40578ccornelius for (int j=0;skeletons[j]!=NULL;j++) { 12259d709d503bab6e2b61931737e662dd293b40578ccornelius u_fprintf(out,"%-10S%-22S%-22S", skeletons[i].getTerminatedBuffer(),data[j].getTerminatedBuffer(), data[j+1].getTerminatedBuffer()); 12359d709d503bab6e2b61931737e662dd293b40578ccornelius DateIntervalFormat* dtitvfmtEn = DateIntervalFormat::createInstance(skeletons[i],Locale::getEnglish(),dtitvinf,status); 12459d709d503bab6e2b61931737e662dd293b40578ccornelius DateIntervalFormat* dtitvfmtJa = DateIntervalFormat::createInstance(skeletons[i],Locale::getJapanese(),dtitvinf,status); 12559d709d503bab6e2b61931737e662dd293b40578ccornelius formatEn.remove(); 12659d709d503bab6e2b61931737e662dd293b40578ccornelius formatJa.remove(); 12759d709d503bab6e2b61931737e662dd293b40578ccornelius dtitvfmtEn->format(dtitvsample[j],formatEn,pos,status); 12859d709d503bab6e2b61931737e662dd293b40578ccornelius dtitvfmtJa->format(dtitvsample[j],formatJa,pos,status); 12959d709d503bab6e2b61931737e662dd293b40578ccornelius u_fprintf(out,"%-45S%-35S\n", formatEn.getTerminatedBuffer(),formatJa.getTerminatedBuffer()); 13059d709d503bab6e2b61931737e662dd293b40578ccornelius } 13159d709d503bab6e2b61931737e662dd293b40578ccornelius } 13259d709d503bab6e2b61931737e662dd293b40578ccornelius u_fclose(out); 13359d709d503bab6e2b61931737e662dd293b40578ccornelius //! [dtitvfmtCustomized] 13459d709d503bab6e2b61931737e662dd293b40578ccornelius} 13559d709d503bab6e2b61931737e662dd293b40578ccornelius 13659d709d503bab6e2b61931737e662dd293b40578ccorneliusint main (int argc, char* argv[]) 13759d709d503bab6e2b61931737e662dd293b40578ccornelius{ 13859d709d503bab6e2b61931737e662dd293b40578ccornelius dtitvfmtPreDefined(); 13959d709d503bab6e2b61931737e662dd293b40578ccornelius dtitvfmtCustomized(); 14059d709d503bab6e2b61931737e662dd293b40578ccornelius return 0; 141fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius} 142