C 文字列操作 新しいページはコチラ

提供: yonewiki
移動: 案内, 検索
(文字列と数値の変換)
(文字列と日付・日時・時間の変換)
5,567行: 5,567行:
  
 
と上記のように時間の表記を文字列に変換できます。ICUによる変換は時間があれば、サンプルを作成したいと思います。
 
と上記のように時間の表記を文字列に変換できます。ICUによる変換は時間があれば、サンプルを作成したいと思います。
 +
 +
 +
それでICUによる時間の文字列化ですが、
 +
サンプルは以下にしめすような感じです。UCalendarというクラスとCalendar+SimpleFormatクラスの2通りがありまして、UCalendarの方はちょっと使いにくそうでした。あとは、タイムゾーンの対応がものすごくて、びっくりします。言語別にUnicodeで表記が出来ます。でも言語別を指定するためのキーワードを知るのが大変で、カレンダーのロケールについては、詳細な一覧方法は提供されていないようにも思います。オーソドックスなロケールは一覧できますが、これでは不十分でして、一番詳しいのは、英語のページになりますが、http://www.unicode.org/reports/tr35/ のサイトになります。長すぎる。日本語のロケールについては、"ja","ja-JP"の基本的な二つに加えてカレンダー用のロケールとして"ja_JP_TRADITIONAL","ja_JP@calendar=japanese"があり、こちらのロケールを使うと公年号(645年の大化から始まって明治 大正 昭和 平成)を使った表現に対応できます。他にも"ja"と同じですが、"japanese"や"jpn"でも良さそうでした。jpnはISO3表記ってことになるのでしょうか?難しいです。これが世界684の地域と620のタイムゾーンにわたって定義されているのでしょうから、なんつうか、やっぱ戦争でもして世界征服して一つの国になったほうがよかったんじゃないのかって思うくらい言語は分かれています。いや冗談冗談。戦争は駄目ですよ。不謹慎な冗談はやめた方がいいか…何の得にもならんしね。こうやって、全く面白くもないのに、おもしろいとおもって書いたことをつつかれて、社会的に抹殺されていくんだろうなぁ。有名人は大変だねぇ。あり得ない発言はだめなんですもんね。わけわからんことを言うと影響力ありますからね。そりゃ世間から指摘されますよね。全く思ってもないようなことを言うのだめだわな。
 +
 +
 +
まずは、UClendarを使ったサンプル。
 +
<syntaxhighlight lang="cpp" line start="1">
 +
#pragma once
 +
#include "stdafx.h"
 +
#include <stdlib.h>
 +
#include <string>      //std::string型定義
 +
#include <mbstring.h> //mbs***関数
 +
#include <iostream>    //cpp cout etc 一般入出力関数
 +
#include <locale>      //Locale関数
 +
#include <tchar.h>    //TCHAR型+_tcs***関数
 +
#include "atlstr.h"    //CString,CStringA,CStringWおよびLPTSTR,LPWSTR,LPSTR,LPCTSTR,LPCWSTR,LPCSTRの定義プリプロセッサ
 +
#include "atlbase.h"  //同上
 +
#include "cstringt.h"  //CStringTの定義プリプロセッサ
 +
#include <vector>      //Vector型テンプレートクラス
 +
 +
#include <sys/timeb.h> //Timeb型構造体
 +
 +
//_bstr_t型を利用するプリプロセッサ(ライブラリはデバッグモードとリリースモード個別設定)
 +
#include "comutil.h"
 +
 +
#ifdef _DEBUG
 +
#pragma comment(lib, "comsuppwd.lib")
 +
#else
 +
#pragma comment(lib, "comsuppw.lib")
 +
#endif
 +
//_bstr_t _End
 +
 +
//ICU ucnvプリプロセッサ(ライブラリはデバッグモードとリリースモード個別設定)
 +
#include <unicode/ucnv.h>    //ucnv文字コード変換ライブラリヘッダ
 +
#include <unicode/translit.h> //文字変換ライブラリヘッダ
 +
#include <unicode/regex.h>    //正規表現
 +
#include <unicode/ucsdet.h>  //文字コード判定
 +
#include <unicode/ucal.h>  //文字コード判定
 +
#include <unicode/uclean.h> //u_cleanup関数
 +
/* for uloc_getDefault() */
 +
#include <unicode/uloc.h>
 +
#include <unicode/calendar.h>
 +
#include <unicode/smpdtfmt.h>
 +
 +
//#include "unicode/utypes.h"
 +
//#include "unicode/locid.h"
 +
//#include "unicode/unistr.h"
 +
//#include "unicode/tzfmt.h"
 +
//#include "unicode/tznames.h"
 +
 +
 +
#ifdef _DEBUG
 +
#pragma comment(lib, "icudt.lib")
 +
#pragma comment(lib, "icuucd.lib")  //ICU ucnvを使うために必要なライブラリ
 +
#pragma comment(lib, "icuind.lib")  //ICU Transliterate関数を使うために必要なライブラリ 正規表現関数も
 +
#pragma comment(lib, "iculed.lib")
 +
#pragma comment(lib, "iculxd.lib") 
 +
#pragma comment(lib, "icuiod.lib") 
 +
#pragma comment(lib, "icutud.lib") 
 +
 +
#else
 +
//#pragma comment(lib, "icudt.lib")
 +
#pragma comment(lib, "icuind.lib")  //ICU Transliterate関数を使うために必要なライブラリ 正規表現関数も
 +
#pragma comment(lib, "icuuc.lib")  //ICU ucnvを使うために必要なライブラリ
 +
//#pragma comment(lib, "icuio.lib")
 +
#endif
 +
//Data  Library                    icudtXX(d).dll icudt(d).lib
 +
//Common Library                    icuucXX(d).dll icuuc(d).lib
 +
//Internationalization(i18n) Library icuinXX(d).dll icuin(d).lib
 +
//Layout Engine                      iculeXX(d).dll icule(d).lib
 +
//Layout Extention Engine            iculxXX(d).dll iculx(d).lib
 +
//ICU I/O(Unicode stdio) Library    icuioXX(d).dll icuio(d).lib
 +
//Tool Utility Library              icutuXX(d).dll icutu(d).lib
 +
 +
//ICU ucnv _End
 +
 +
#include "UnicodeConverter.h"
 +
 +
using namespace std;
 +
 +
int _tmain(int argc, _TCHAR* argv[])
 +
{
 +
  _tsetlocale(LC_ALL, _T("Japanese")); //ロケールセットすると_l関数でロケール指定しなくても日本語が使われます。
 +
 +
  _locale_t localeJpanease;
 +
  localeJpanease = _create_locale(LC_ALL, "Japanese");
 +
 +
  int32_t int32TimeZoneID;
 +
  UChar* pucharResult = new UChar[1024];
 +
 +
  UErrorCode err = U_ZERO_ERROR;
 +
  printf("%s\n",uloc_getDefault());
 +
  UCalendar* cal = ucal_open(
 +
          L"Asia/Tokyo", 10, /* default timezone */
 +
          uloc_getDefault(), /* default (current) locale */
 +
          UCAL_TRADITIONAL, /* default calendar type */
 +
          &err);
 +
  printf("errorNum?->%d\n",err);
 +
  if (!cal)
 +
  {
 +
    err = U_ZERO_ERROR;
 +
    fprintf(stderr, "ICU error: %s\n", u_errorName(err));
 +
    u_cleanup();
 +
    return ;
 +
  }
 +
  //★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
 +
  //★ここからしばらくは日付表示とは関係の無い、余計なプログラム
 +
 +
  //属性値取得関数 最初の曜日の番号は1
 +
  printf("★現在のオープンしているZoneIDの各種属性値を取得する関数。\n");
 +
  printf("Attrbute->%d\n", ucal_getAttribute(cal, UCAL_FIRST_DAY_OF_WEEK));
 +
  printf("\n");
 +
 +
 +
  //ゾーンIDを取得する関数。もちろんAsia/Tokyo。他の一覧が取りたいのにね。
 +
  printf("★現在のオープンしているZoneIDのTimeZoneIDをUchar型変数に取得し、その文字数を返す関数\n");
 +
  err = U_ZERO_ERROR;
 +
  int32TimeZoneID = ucal_getTimeZoneID(cal, pucharResult, 1024, &err);
 +
  wprintf(L"TimezoneID->%d[Byte]:%s\n",int32TimeZoneID,pucharResult);//10:Asia/Tokyo
 +
  printf("\n");
 +
 +
 +
  //タイプによるロケール名を取得。 ULOC_VALID_LOCALE , ULOC_REQUESTED_LOCALE
 +
  //ULOC_ACTUAL_LOCALE->ja
 +
  //ULOC_VALID_LOCALE->ja_JP
 +
  //ULOC_REQUESTED_LOCALE->NULL
 +
  printf("★現在のオープンしているZoneIDのULocDataLocaleTypeによる名前を取得。\n");
 +
  err = U_ZERO_ERROR;
 +
  printf("TypeLocale->%s\n", ucal_getLocaleByType(cal, ULOC_VALID_LOCALE, &err));
 +
  printf("\n");
 +
 
 +
  //★ここまでが、かなり余計なプログラムでした。
 +
  //★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
 +
 +
  //日付をセットする。
 +
  err = U_ZERO_ERROR;
 +
  ucal_setDateTime(cal, 2014, UCAL_OCTOBER, 17, 22, 45, 00, &err);//直接指定。
 +
  ucal_setMillis(cal, ucal_getNow(), &err);//現在日時での指定で上書き。ミリ秒単位で表現されるダブル型の数値。
 +
  //関数名がミリ秒だけを扱うみたいに見えるけど、これで日付時刻ミリ秒まで全部セットされる。
 +
 
 +
 +
 +
  //特定のフィールドの制限値取得 月の最大。11でした。年の最大は144683です。14万年…
 +
  printf("★現在のオープンしているZoneIDの各種フィールド制限値の取得関数\n");
 +
  int32_t int32TempLimitValue;
 +
  err = U_ZERO_ERROR;
 +
  int32TempLimitValue = ucal_getLimit(cal,UCAL_MILLISECOND,UCAL_MINIMUM, &err);
 +
  printf("Limit->%d\n",int32TempLimitValue);
 +
  printf("\n");
 +
 +
  //特定のフィールドのロール 時間を追加したりできる。3週間追加する例。コメント化してますけど。
 +
  printf("★現在のオープンしているZoneIDの各種フィールド制限値の取得関数\n");
 +
  int32_t int32Amount = 3;
 +
  err = U_ZERO_ERROR;
 +
  //ucal_roll(cal, UCAL_WEEK_OF_YEAR, int32Amount,&err);
 +
  printf("Limit->%d\n",int32Amount);
 +
  printf("\n");
 +
 +
  err = U_ZERO_ERROR;
 +
  UDate udateGetMillis;
 +
  err = U_ZERO_ERROR;
 +
  udateGetMillis = ucal_getMillis(cal, &err);
 +
  printf("★現在のオープンしているZoneIDのミリ秒を取得。\n");
 +
  err = U_ZERO_ERROR;
 +
  printf("GetMilli->%f %f %f\n", udateGetMillis , ucal_getNow(), ucal_getGregorianChange(cal, &err));
 +
  printf("\n");
 +
 
 +
  //日時の出力
 +
  printf("Date->%d/%d/%d\n",
 +
          ucal_get(cal, UCAL_YEAR, &err),
 +
          ucal_get(cal, UCAL_MONTH, &err) + 1,
 +
          ucal_get(cal, UCAL_DATE, &err));
 +
 +
  printf("Time->%d:%d:%d:%d\n",
 +
      ucal_get(cal, UCAL_HOUR_OF_DAY, &err),
 +
      ucal_get(cal, UCAL_MINUTE, &err) + 1,
 +
          ucal_get(cal, UCAL_SECOND, &err),
 +
          ucal_get(cal, UCAL_MILLISECOND, &err));
 +
 +
  printf("Othr->%d:%d:%d:%d\n",
 +
          ucal_get(cal, UCAL_DAY_OF_WEEK, &err),
 +
          ucal_get(cal, UCAL_AM_PM, &err) + 1,
 +
          ucal_get(cal, UCAL_ZONE_OFFSET, &err),
 +
          ucal_get(cal, UCAL_DST_OFFSET, &err));
 +
 +
  ucal_close(cal);
 +
  u_cleanup();
 +
  return 0;
 +
}
 +
</syntaxhighlight>
 +
出力 大体こんな感じ
 +
<syntaxhighlight lang="text">
 +
★現在のオープンしているZoneIDの各種属性値を取得する関数。
 +
Attrbute->1
 +
 +
★現在のオープンしているZoneIDのTimeZoneIDをUchar型変数に取得し、その文字数を返す関数
 +
TimezoneID->10[Byte]:Asia/Tokyo
 +
 +
★現在のオープンしているZoneIDのULocDataLocaleTypeによる名前を取得。
 +
TypeLocale->ja_JP
 +
 +
★現在のオープンしているZoneIDの各種フィールド制限値の取得関数
 +
Limit->0
 +
 +
★現在のオープンしているZoneIDの各種フィールド制限値の取得関数
 +
Limit->3
 +
 +
★現在のオープンしているZoneIDのミリ秒を取得。
 +
GetMilli->1413654266519.000000 1413654266529.000000 -12219292800000.000000
 +
 +
Date->1/10/19
 +
Time->2:45:26:519
 +
Othr->1:1:32400000:0
 +
</syntaxhighlight>
 +
そして、Calendar+SimpleFormatクラスを使うサンプルは以下のような感じ。上記のプログラムの続きなので、インクルードとか飛ばします。
 +
<syntaxhighlight lang="cpp" line start="1">
 +
  UErrorCode status = U_ZERO_ERROR;
 +
  //Calendar *cals = Calendar::createInstance(status);//ja_JP@calendar=japanese ja_JP_TRADITIONAL ja_JP
 +
  Calendar *cals = Calendar::createInstance("ja_JP@calendar=japanese", status);
 +
  SimpleDateFormat *fmt = new SimpleDateFormat(UnicodeString("SSS S U Q q W w e F D zzzz zzz zz z EEE EE E YYYY YYY YY Y yyyy yyy yy v GG G y.M.d vv HH:mm:ss vvvv K:mm a vvv hh:mm h:m KK:mm  H:m aaa yyyyy.MM.dd GGG"), status);
 +
  //SimpleDateFormat ★ja_JP(引数無し) ☆ja_JP_TRADITIONAL 1988年基準 年引数が1なら1989年で公元号1年 公元号名は表示されない。
 +
  //z    タイムゾーン名(★GMT+09:18:59 ☆JST)
 +
  //zz  タイムゾーン  (★GMT+09:18:59 ☆JST)
 +
  //zzz  タイムゾーン  (★GMT+09:18:59 ☆JST)
 +
  //zzzz タイムゾーン年-タイムゾーン名(★2014-GMT+09:18:59 ☆2014-日本標準時)
 +
  //v   タイムゾーン年-タイムゾーン名(★2014-日本時間 ☆2014-JST)
 +
  //vv  タイムゾーン  (★表記無し)
 +
  //vvv タイムゾーン  (★表記無し)
 +
  //vvvv タイムゾーン名(★日本時間 ☆日本標準時)
 +
  //G    グレゴリオ暦年-歴名(★2014-西暦 ☆平成)
 +
  //GG  グレゴリオ暦名(年数値無し★西暦 ☆平成)
 +
  //GGG  グレゴリオ暦名(年数値無し★西暦 ☆平成)
 +
  //YYYY グレゴリオ暦年-公元号年(★2014-0026 ☆2014-2014)
 +
  //YYY  公元号年orグレゴリオ暦年(3桁表現最小表現 0埋め★026 ☆2014)
 +
  //YY  公元号年orグレゴリオ暦年(2桁表現固定0埋め★26 ☆14)
 +
  //Y    公元号年orグレゴリオ暦年(最小文字列★26 ☆2014)
 +
  //yyyyy公元号年5桁数値のみ(0埋め)
 +
  //yyyy 公元号年4桁数値のみ(0埋め)
 +
  //yyy  公元号年3桁数値のみ(0埋め)
 +
  //yy  公元号年2桁数値のみ(0埋め)
 +
  //y    公元号年数値のみ
 +
  //M    数値表現の月(最小文字列)※小文字だと時間の分
 +
  //MM  数値表現の月(2桁表現)※小文字だと時間の分
 +
  //MMMMM数値表現の月(最小文字列)※小文字だと時間の分
 +
  //d    数値表現の日(最小文字列)
 +
  //dd  数値表現の日(2桁表現)
 +
  //EEE  曜日(★土 1日前の曜日 ☆日)
 +
  //EE  曜日(★土 1日前の曜日 ☆日)
 +
  //E    曜日(★土 1日前の曜日 ☆日)
 +
  //a  午前・午後表記(漢字日本語★午前)
 +
  //K    数値表現の時間(0時は0のまま 最小文字列)
 +
  //KK  数値表現の時間(0時は0のまま 2桁表現0埋め)
 +
  //H    数値表現の時間(24時間制 0時は0のまま 最小文字列)
 +
  //HH  数値表現の時間(24時間制 0時は0のまま 2桁表現0埋め)
 +
  //h    数値表現の時間(0時は12時 最小文字列)
 +
  //hh  数値表現の時間(0時は12時 2桁表現0埋め)
 +
  //m    数値用言の分(最小文字列)※大文字だと日付の月
 +
  //mm  数値用言の分(2桁表現0埋め)※大文字だと日付の月
 +
  //s    数値表現の秒(最小文字列)
 +
  //ss  数値表現の秒(2桁表現0埋め)
 +
  //その他
 +
  //S    ミリ秒
 +
  //u    extended年
 +
  //Q    四半期 テキスト&番号
 +
  //q
 +
  //w    週目 通年
 +
  //W    週目 月
 +
  //D    日目 通年   
 +
  //e    曜日番号
 +
  //F    何回目の曜日 月 
 +
  //
 +
 +
  fmt->adoptCalendar(cals);
 +
  for(int k=2014;k<2015;k++){
 +
    cals->set(k - 1988 , 10 - 1, 17, 14, 0, 0);
 +
    UDate now = cals->getTime(status);
 +
    UnicodeString buf;
 +
    fmt->format(now, buf);
 +
    char* dst = new char[256];
 +
    std::string conv(buf.extract(0, buf.length(), 0, "shift_jis"), '\0');
 +
    buf.extract(0, buf.length(), &conv[0], "shift_jis");
 +
    memcpy(dst, conv.c_str(), conv.size());
 +
    printf("%d-%s ",k,conv.c_str());
 +
    delete dst;
 +
  }
 +
  delete fmt;
 +
</syntaxhighlight>
 +
出力 いろんな種類の出力をがっつり記述したので、わけわからないことになってますが
 +
<syntaxhighlight lang="text">
 +
2014-274 2 26 4 4 3 42 6 3 290 日本標準時 JST JST JST 金 金 金 2014 2014 14 2014 0026 026 26 JST 平成 平成 26.10.17  14:00:00 日本標準時 2:00 午後  02:00 2:0 02:00  14:0 午後 00026.10.17 平成
 +
</syntaxhighlight>
 +
あとのほうのプログラムの方がタイムゾーン名を各国語で表示できる分、国際化には向いているかもしれませんが、そんなプログラム組む人いるのかなぁ。ちなみにロケール名およびタイムゾーン名の一覧は以下のようになっています。
 +
 +
ロケール名一覧
 +
<syntaxhighlight lang="text">
 +
af
 +
af
 +
af
 +
agq
 +
agq
 +
ak
 +
ak
 +
am
 +
am
 +
ar
 +
ar
 +
ar
 +
ar
 +
ar
 +
ar
 +
ar
 +
ar
 +
ar
 +
ar
 +
ar
 +
ar
 +
ar
 +
ar
 +
ar
 +
ar
 +
ar
 +
ar
 +
ar
 +
ar
 +
ar
 +
ar
 +
ar
 +
ar
 +
ar
 +
ar
 +
ar
 +
ar
 +
ar
 +
as
 +
as
 +
asa
 +
asa
 +
az
 +
az
 +
az
 +
az
 +
az
 +
bas
 +
bas
 +
be
 +
be
 +
bem
 +
bem
 +
bez
 +
bez
 +
bg
 +
bg
 +
bm
 +
bm
 +
bm
 +
bn
 +
bn
 +
bn
 +
bo
 +
bo
 +
bo
 +
br
 +
br
 +
brx
 +
brx
 +
bs
 +
bs
 +
bs
 +
bs
 +
bs
 +
ca
 +
ca
 +
ca
 +
ca
 +
ca
 +
cgg
 +
cgg
 +
chr
 +
chr
 +
cs
 +
cs
 +
cy
 +
cy
 +
da
 +
da
 +
da
 +
dav
 +
dav
 +
de
 +
de
 +
de
 +
de
 +
de
 +
de
 +
de
 +
dje
 +
dje
 +
dsb
 +
dsb
 +
dua
 +
dua
 +
dyo
 +
dyo
 +
dz
 +
dz
 +
ebu
 +
ebu
 +
ee
 +
ee
 +
ee
 +
el
 +
el
 +
el
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
en
 +
eo
 +
es
 +
es
 +
es
 +
es
 +
es
 +
es
 +
es
 +
es
 +
es
 +
es
 +
es
 +
es
 +
es
 +
es
 +
es
 +
es
 +
es
 +
es
 +
es
 +
es
 +
es
 +
es
 +
es
 +
es
 +
es
 +
es
 +
es
 +
et
 +
et
 +
eu
 +
eu
 +
ewo
 +
ewo
 +
fa
 +
fa
 +
fa
 +
ff
 +
ff
 +
ff
 +
ff
 +
ff
 +
fi
 +
fi
 +
fil
 +
fil
 +
fo
 +
fo
 +
fr
 +
fr
 +
fr
 +
fr
 +
fr
 +
fr
 +
fr
 +
fr
 +
fr
 +
fr
 +
fr
 +
fr
 +
fr
 +
fr
 +
fr
 +
fr
 +
fr
 +
fr
 +
fr
 +
fr
 +
fr
 +
fr
 +
fr
 +
fr
 +
fr
 +
fr
 +
fr
 +
fr
 +
fr
 +
fr
 +
fr
 +
fr
 +
fr
 +
fr
 +
fr
 +
fr
 +
fr
 +
fr
 +
fr
 +
fr
 +
fr
 +
fr
 +
fr
 +
fr
 +
fr
 +
fr
 +
fr
 +
fur
 +
fur
 +
fy
 +
fy
 +
ga
 +
ga
 +
gd
 +
gd
 +
gl
 +
gl
 +
gsw
 +
gsw
 +
gsw
 +
gsw
 +
gu
 +
gu
 +
guz
 +
guz
 +
gv
 +
gv
 +
ha
 +
ha
 +
ha
 +
ha
 +
ha
 +
haw
 +
haw
 +
he
 +
he
 +
hi
 +
hi
 +
hr
 +
hr
 +
hr
 +
hsb
 +
hsb
 +
hu
 +
hu
 +
hy
 +
hy
 +
id
 +
id
 +
ig
 +
ig
 +
ii
 +
ii
 +
is
 +
is
 +
it
 +
it
 +
it
 +
it
 +
ja
 +
ja
 +
jgo
 +
jgo
 +
jmc
 +
jmc
 +
ka
 +
ka
 +
kab
 +
kab
 +
kam
 +
kam
 +
kde
 +
kde
 +
kea
 +
kea
 +
khq
 +
khq
 +
ki
 +
ki
 +
kk
 +
kk
 +
kk
 +
kkj
 +
kkj
 +
kl
 +
kl
 +
kln
 +
kln
 +
km
 +
km
 +
kn
 +
kn
 +
ko
 +
ko
 +
ko
 +
kok
 +
kok
 +
ks
 +
ks
 +
ks
 +
ksb
 +
ksb
 +
ksf
 +
ksf
 +
ksh
 +
ksh
 +
kw
 +
kw
 +
ky
 +
ky
 +
ky
 +
lag
 +
lag
 +
lb
 +
lb
 +
lg
 +
lg
 +
lkt
 +
lkt
 +
ln
 +
ln
 +
ln
 +
ln
 +
ln
 +
lo
 +
lo
 +
lt
 +
lt
 +
lu
 +
lu
 +
luo
 +
luo
 +
luy
 +
luy
 +
lv
 +
lv
 +
mas
 +
mas
 +
mas
 +
mer
 +
mer
 +
mfe
 +
mfe
 +
mg
 +
mg
 +
mgh
 +
mgh
 +
mgo
 +
mgo
 +
mk
 +
mk
 +
ml
 +
ml
 +
mn
 +
mn
 +
mn
 +
mr
 +
mr
 +
ms
 +
ms
 +
ms
 +
ms
 +
ms
 +
mt
 +
mt
 +
mua
 +
mua
 +
my
 +
my
 +
naq
 +
naq
 +
nb
 +
nb
 +
nb
 +
nd
 +
nd
 +
ne
 +
ne
 +
ne
 +
nl
 +
nl
 +
nl
 +
nl
 +
nl
 +
nl
 +
nl
 +
nl
 +
nmg
 +
nmg
 +
nn
 +
nn
 +
nnh
 +
nnh
 +
nus
 +
nus
 +
nyn
 +
nyn
 +
om
 +
om
 +
om
 +
or
 +
or
 +
os
 +
os
 +
os
 +
pa
 +
pa
 +
pa
 +
pa
 +
pa
 +
pl
 +
pl
 +
ps
 +
ps
 +
pt
 +
pt
 +
pt
 +
pt
 +
pt
 +
pt
 +
pt
 +
pt
 +
pt
 +
pt
 +
qu
 +
qu
 +
qu
 +
qu
 +
rm
 +
rm
 +
rn
 +
rn
 +
ro
 +
ro
 +
ro
 +
rof
 +
rof
 +
ru
 +
ru
 +
ru
 +
ru
 +
ru
 +
ru
 +
ru
 +
rw
 +
rw
 +
rwk
 +
rwk
 +
sah
 +
sah
 +
saq
 +
saq
 +
sbp
 +
sbp
 +
se
 +
se
 +
se
 +
se
 +
seh
 +
seh
 +
ses
 +
ses
 +
sg
 +
sg
 +
shi
 +
shi
 +
shi
 +
shi
 +
shi
 +
si
 +
si
 +
sk
 +
sk
 +
sl
 +
sl
 +
smn
 +
smn
 +
sn
 +
sn
 +
so
 +
so
 +
so
 +
so
 +
so
 +
sq
 +
sq
 +
sq
 +
sq
 +
sr
 +
sr
 +
sr
 +
sr
 +
sr
 +
sr
 +
sr
 +
sr
 +
sr
 +
sr
 +
sr
 +
sv
 +
sv
 +
sv
 +
sv
 +
sw
 +
sw
 +
sw
 +
sw
 +
swc
 +
swc
 +
ta
 +
ta
 +
ta
 +
ta
 +
ta
 +
te
 +
te
 +
teo
 +
teo
 +
teo
 +
th
 +
th
 +
ti
 +
ti
 +
ti
 +
to
 +
to
 +
tr
 +
tr
 +
tr
 +
twq
 +
twq
 +
tzm
 +
tzm
 +
tzm
 +
ug
 +
ug
 +
ug
 +
uk
 +
uk
 +
ur
 +
ur
 +
ur
 +
uz
 +
uz
 +
uz
 +
uz
 +
uz
 +
uz
 +
uz
 +
vai
 +
vai
 +
vai
 +
vai
 +
vai
 +
vi
 +
vi
 +
vun
 +
vun
 +
wae
 +
wae
 +
xog
 +
xog
 +
yav
 +
yav
 +
yi
 +
yi
 +
yo
 +
yo
 +
yo
 +
zgh
 +
zgh
 +
zh
 +
zh
 +
zh
 +
zh
 +
zh
 +
zh
 +
zh
 +
zh
 +
zh
 +
zh
 +
zu
 +
zu
 +
</syntaxhighlight>
 +
 +
タイムゾーン名一覧
 +
<syntaxhighlight lang="text">
 +
ACT
 +
AET
 +
AGT
 +
ART
 +
AST
 +
Africa/Abidjan
 +
Africa/Accra
 +
Africa/Addis_Ababa
 +
Africa/Algiers
 +
Africa/Asmara
 +
Africa/Asmera
 +
Africa/Bamako
 +
Africa/Bangui
 +
Africa/Banjul
 +
Africa/Bissau
 +
Africa/Blantyre
 +
Africa/Brazzaville
 +
Africa/Bujumbura
 +
Africa/Cairo
 +
Africa/Casablanca
 +
Africa/Ceuta
 +
Africa/Conakry
 +
Africa/Dakar
 +
Africa/Dar_es_Salaam
 +
Africa/Djibouti
 +
Africa/Douala
 +
Africa/El_Aaiun
 +
Africa/Freetown
 +
Africa/Gaborone
 +
Africa/Harare
 +
Africa/Johannesburg
 +
Africa/Juba
 +
Africa/Kampala
 +
Africa/Khartoum
 +
Africa/Kigali
 +
Africa/Kinshasa
 +
Africa/Lagos
 +
Africa/Libreville
 +
Africa/Lome
 +
Africa/Luanda
 +
Africa/Lubumbashi
 +
Africa/Lusaka
 +
Africa/Malabo
 +
Africa/Maputo
 +
Africa/Maseru
 +
Africa/Mbabane
 +
Africa/Mogadishu
 +
Africa/Monrovia
 +
Africa/Nairobi
 +
Africa/Ndjamena
 +
Africa/Niamey
 +
Africa/Nouakchott
 +
Africa/Ouagadougou
 +
Africa/Porto-Novo
 +
Africa/Sao_Tome
 +
Africa/Timbuktu
 +
Africa/Tripoli
 +
Africa/Tunis
 +
Africa/Windhoek
 +
America/Adak
 +
America/Anchorage
 +
America/Anguilla
 +
America/Antigua
 +
America/Araguaina
 +
America/Argentina/Buenos_Aires
 +
America/Argentina/Catamarca
 +
America/Argentina/ComodRivadavia
 +
America/Argentina/Cordoba
 +
America/Argentina/Jujuy
 +
America/Argentina/La_Rioja
 +
America/Argentina/Mendoza
 +
America/Argentina/Rio_Gallegos
 +
America/Argentina/Salta
 +
America/Argentina/San_Juan
 +
America/Argentina/San_Luis
 +
America/Argentina/Tucuman
 +
America/Argentina/Ushuaia
 +
America/Aruba
 +
America/Asuncion
 +
America/Atikokan
 +
America/Atka
 +
America/Bahia
 +
America/Bahia_Banderas
 +
America/Barbados
 +
America/Belem
 +
America/Belize
 +
America/Blanc-Sablon
 +
America/Boa_Vista
 +
America/Bogota
 +
America/Boise
 +
America/Buenos_Aires
 +
America/Cambridge_Bay
 +
America/Campo_Grande
 +
America/Cancun
 +
America/Caracas
 +
America/Catamarca
 +
America/Cayenne
 +
America/Cayman
 +
America/Chicago
 +
America/Chihuahua
 +
America/Coral_Harbour
 +
America/Cordoba
 +
America/Costa_Rica
 +
America/Creston
 +
America/Cuiaba
 +
America/Curacao
 +
America/Danmarkshavn
 +
America/Dawson
 +
America/Dawson_Creek
 +
America/Denver
 +
America/Detroit
 +
America/Dominica
 +
America/Edmonton
 +
America/Eirunepe
 +
America/El_Salvador
 +
America/Ensenada
 +
America/Fort_Wayne
 +
America/Fortaleza
 +
America/Glace_Bay
 +
America/Godthab
 +
America/Goose_Bay
 +
America/Grand_Turk
 +
America/Grenada
 +
America/Guadeloupe
 +
America/Guatemala
 +
America/Guayaquil
 +
America/Guyana
 +
America/Halifax
 +
America/Havana
 +
America/Hermosillo
 +
America/Indiana/Indianapolis
 +
America/Indiana/Knox
 +
America/Indiana/Marengo
 +
America/Indiana/Petersburg
 +
America/Indiana/Tell_City
 +
America/Indiana/Vevay
 +
America/Indiana/Vincennes
 +
America/Indiana/Winamac
 +
America/Indianapolis
 +
America/Inuvik
 +
America/Iqaluit
 +
America/Jamaica
 +
America/Jujuy
 +
America/Juneau
 +
America/Kentucky/Louisville
 +
America/Kentucky/Monticello
 +
America/Knox_IN
 +
America/Kralendijk
 +
America/La_Paz
 +
America/Lima
 +
America/Los_Angeles
 +
America/Louisville
 +
America/Lower_Princes
 +
America/Maceio
 +
America/Managua
 +
America/Manaus
 +
America/Marigot
 +
America/Martinique
 +
America/Matamoros
 +
America/Mazatlan
 +
America/Mendoza
 +
America/Menominee
 +
America/Merida
 +
America/Metlakatla
 +
America/Mexico_City
 +
America/Miquelon
 +
America/Moncton
 +
America/Monterrey
 +
America/Montevideo
 +
America/Montreal
 +
America/Montserrat
 +
America/Nassau
 +
America/New_York
 +
America/Nipigon
 +
America/Nome
 +
America/Noronha
 +
America/North_Dakota/Beulah
 +
America/North_Dakota/Center
 +
America/North_Dakota/New_Salem
 +
America/Ojinaga
 +
America/Panama
 +
America/Pangnirtung
 +
America/Paramaribo
 +
America/Phoenix
 +
America/Port-au-Prince
 +
America/Port_of_Spain
 +
America/Porto_Acre
 +
America/Porto_Velho
 +
America/Puerto_Rico
 +
America/Rainy_River
 +
America/Rankin_Inlet
 +
America/Recife
 +
America/Regina
 +
America/Resolute
 +
America/Rio_Branco
 +
America/Rosario
 +
America/Santa_Isabel
 +
America/Santarem
 +
America/Santiago
 +
America/Santo_Domingo
 +
America/Sao_Paulo
 +
America/Scoresbysund
 +
America/Shiprock
 +
America/Sitka
 +
America/St_Barthelemy
 +
America/St_Johns
 +
America/St_Kitts
 +
America/St_Lucia
 +
America/St_Thomas
 +
America/St_Vincent
 +
America/Swift_Current
 +
America/Tegucigalpa
 +
America/Thule
 +
America/Thunder_Bay
 +
America/Tijuana
 +
America/Toronto
 +
America/Tortola
 +
America/Vancouver
 +
America/Virgin
 +
America/Whitehorse
 +
America/Winnipeg
 +
America/Yakutat
 +
America/Yellowknife
 +
Antarctica/Casey
 +
Antarctica/Davis
 +
Antarctica/DumontDUrville
 +
Antarctica/Macquarie
 +
Antarctica/Mawson
 +
Antarctica/McMurdo
 +
Antarctica/Palmer
 +
Antarctica/Rothera
 +
Antarctica/South_Pole
 +
Antarctica/Syowa
 +
Antarctica/Troll
 +
Antarctica/Vostok
 +
Arctic/Longyearbyen
 +
Asia/Aden
 +
Asia/Almaty
 +
Asia/Amman
 +
Asia/Anadyr
 +
Asia/Aqtau
 +
Asia/Aqtobe
 +
Asia/Ashgabat
 +
Asia/Ashkhabad
 +
Asia/Baghdad
 +
Asia/Bahrain
 +
Asia/Baku
 +
Asia/Bangkok
 +
Asia/Beirut
 +
Asia/Bishkek
 +
Asia/Brunei
 +
Asia/Calcutta
 +
Asia/Chita
 +
Asia/Choibalsan
 +
Asia/Chongqing
 +
Asia/Chungking
 +
Asia/Colombo
 +
Asia/Dacca
 +
Asia/Damascus
 +
Asia/Dhaka
 +
Asia/Dili
 +
Asia/Dubai
 +
Asia/Dushanbe
 +
Asia/Gaza
 +
Asia/Harbin
 +
Asia/Hebron
 +
Asia/Ho_Chi_Minh
 +
Asia/Hong_Kong
 +
Asia/Hovd
 +
Asia/Irkutsk
 +
Asia/Istanbul
 +
Asia/Jakarta
 +
Asia/Jayapura
 +
Asia/Jerusalem
 +
Asia/Kabul
 +
Asia/Kamchatka
 +
Asia/Karachi
 +
Asia/Kashgar
 +
Asia/Kathmandu
 +
Asia/Katmandu
 +
Asia/Khandyga
 +
Asia/Kolkata
 +
Asia/Krasnoyarsk
 +
Asia/Kuala_Lumpur
 +
Asia/Kuching
 +
Asia/Kuwait
 +
Asia/Macao
 +
Asia/Macau
 +
Asia/Magadan
 +
Asia/Makassar
 +
Asia/Manila
 +
Asia/Muscat
 +
Asia/Nicosia
 +
Asia/Novokuznetsk
 +
Asia/Novosibirsk
 +
Asia/Omsk
 +
Asia/Oral
 +
Asia/Phnom_Penh
 +
Asia/Pontianak
 +
Asia/Pyongyang
 +
Asia/Qatar
 +
Asia/Qyzylorda
 +
Asia/Rangoon
 +
Asia/Riyadh
 +
Asia/Saigon
 +
Asia/Sakhalin
 +
Asia/Samarkand
 +
Asia/Seoul
 +
Asia/Shanghai
 +
Asia/Singapore
 +
Asia/Srednekolymsk
 +
Asia/Taipei
 +
Asia/Tashkent
 +
Asia/Tbilisi
 +
Asia/Tehran
 +
Asia/Tel_Aviv
 +
Asia/Thimbu
 +
Asia/Thimphu
 +
Asia/Tokyo
 +
Asia/Ujung_Pandang
 +
Asia/Ulaanbaatar
 +
Asia/Ulan_Bator
 +
Asia/Urumqi
 +
Asia/Ust-Nera
 +
Asia/Vientiane
 +
Asia/Vladivostok
 +
Asia/Yakutsk
 +
Asia/Yekaterinburg
 +
Asia/Yerevan
 +
Atlantic/Azores
 +
Atlantic/Bermuda
 +
Atlantic/Canary
 +
Atlantic/Cape_Verde
 +
Atlantic/Faeroe
 +
Atlantic/Faroe
 +
Atlantic/Jan_Mayen
 +
Atlantic/Madeira
 +
Atlantic/Reykjavik
 +
Atlantic/South_Georgia
 +
Atlantic/St_Helena
 +
Atlantic/Stanley
 +
Australia/ACT
 +
Australia/Adelaide
 +
Australia/Brisbane
 +
Australia/Broken_Hill
 +
Australia/Canberra
 +
Australia/Currie
 +
Australia/Darwin
 +
Australia/Eucla
 +
Australia/Hobart
 +
Australia/LHI
 +
Australia/Lindeman
 +
Australia/Lord_Howe
 +
Australia/Melbourne
 +
Australia/NSW
 +
Australia/North
 +
Australia/Perth
 +
Australia/Queensland
 +
Australia/South
 +
Australia/Sydney
 +
Australia/Tasmania
 +
Australia/Victoria
 +
Australia/West
 +
Australia/Yancowinna
 +
BET
 +
BST
 +
Brazil/Acre
 +
Brazil/DeNoronha
 +
Brazil/East
 +
Brazil/West
 +
CAT
 +
CET
 +
CNT
 +
CST
 +
CST6CDT
 +
CTT
 +
Canada/Atlantic
 +
Canada/Central
 +
Canada/East-Saskatchewan
 +
Canada/Eastern
 +
Canada/Mountain
 +
Canada/Newfoundland
 +
Canada/Pacific
 +
Canada/Saskatchewan
 +
Canada/Yukon
 +
Chile/Continental
 +
Chile/EasterIsland
 +
Cuba
 +
EAT
 +
ECT
 +
EET
 +
EST
 +
EST5EDT
 +
Egypt
 +
Eire
 +
Etc/GMT
 +
Etc/GMT+0
 +
Etc/GMT+1
 +
Etc/GMT+10
 +
Etc/GMT+11
 +
Etc/GMT+12
 +
Etc/GMT+2
 +
Etc/GMT+3
 +
Etc/GMT+4
 +
Etc/GMT+5
 +
Etc/GMT+6
 +
Etc/GMT+7
 +
Etc/GMT+8
 +
Etc/GMT+9
 +
Etc/GMT-0
 +
Etc/GMT-1
 +
Etc/GMT-10
 +
Etc/GMT-11
 +
Etc/GMT-12
 +
Etc/GMT-13
 +
Etc/GMT-14
 +
Etc/GMT-2
 +
Etc/GMT-3
 +
Etc/GMT-4
 +
Etc/GMT-5
 +
Etc/GMT-6
 +
Etc/GMT-7
 +
Etc/GMT-8
 +
Etc/GMT-9
 +
Etc/GMT0
 +
Etc/Greenwich
 +
Etc/UCT
 +
Etc/UTC
 +
Etc/Universal
 +
Etc/Zulu
 +
Europe/Amsterdam
 +
Europe/Andorra
 +
Europe/Athens
 +
Europe/Belfast
 +
Europe/Belgrade
 +
Europe/Berlin
 +
Europe/Bratislava
 +
Europe/Brussels
 +
Europe/Bucharest
 +
Europe/Budapest
 +
Europe/Busingen
 +
Europe/Chisinau
 +
Europe/Copenhagen
 +
Europe/Dublin
 +
Europe/Gibraltar
 +
Europe/Guernsey
 +
Europe/Helsinki
 +
Europe/Isle_of_Man
 +
Europe/Istanbul
 +
Europe/Jersey
 +
Europe/Kaliningrad
 +
Europe/Kiev
 +
Europe/Lisbon
 +
Europe/Ljubljana
 +
Europe/London
 +
Europe/Luxembourg
 +
Europe/Madrid
 +
Europe/Malta
 +
Europe/Mariehamn
 +
Europe/Minsk
 +
Europe/Monaco
 +
Europe/Moscow
 +
Europe/Nicosia
 +
Europe/Oslo
 +
Europe/Paris
 +
Europe/Podgorica
 +
Europe/Prague
 +
Europe/Riga
 +
Europe/Rome
 +
Europe/Samara
 +
Europe/San_Marino
 +
Europe/Sarajevo
 +
Europe/Simferopol
 +
Europe/Skopje
 +
Europe/Sofia
 +
Europe/Stockholm
 +
Europe/Tallinn
 +
Europe/Tirane
 +
Europe/Tiraspol
 +
Europe/Uzhgorod
 +
Europe/Vaduz
 +
Europe/Vatican
 +
Europe/Vienna
 +
Europe/Vilnius
 +
Europe/Volgograd
 +
Europe/Warsaw
 +
Europe/Zagreb
 +
Europe/Zaporozhye
 +
Europe/Zurich
 +
Factory
 +
GB
 +
GB-Eire
 +
GMT
 +
GMT+0
 +
GMT-0
 +
GMT0
 +
Greenwich
 +
HST
 +
Hongkong
 +
IET
 +
IST
 +
Iceland
 +
Indian/Antananarivo
 +
Indian/Chagos
 +
Indian/Christmas
 +
Indian/Cocos
 +
Indian/Comoro
 +
Indian/Kerguelen
 +
Indian/Mahe
 +
Indian/Maldives
 +
Indian/Mauritius
 +
Indian/Mayotte
 +
Indian/Reunion
 +
Iran
 +
Israel
 +
JST
 +
Jamaica
 +
Japan
 +
Kwajalein
 +
Libya
 +
MET
 +
MIT
 +
MST
 +
MST7MDT
 +
Mexico/BajaNorte
 +
Mexico/BajaSur
 +
Mexico/General
 +
NET
 +
NST
 +
NZ
 +
NZ-CHAT
 +
Navajo
 +
PLT
 +
PNT
 +
PRC
 +
PRT
 +
PST
 +
PST8PDT
 +
Pacific/Apia
 +
Pacific/Auckland
 +
Pacific/Chatham
 +
Pacific/Chuuk
 +
Pacific/Easter
 +
Pacific/Efate
 +
Pacific/Enderbury
 +
Pacific/Fakaofo
 +
Pacific/Fiji
 +
Pacific/Funafuti
 +
Pacific/Galapagos
 +
Pacific/Gambier
 +
Pacific/Guadalcanal
 +
Pacific/Guam
 +
Pacific/Honolulu
 +
Pacific/Johnston
 +
Pacific/Kiritimati
 +
Pacific/Kosrae
 +
Pacific/Kwajalein
 +
Pacific/Majuro
 +
Pacific/Marquesas
 +
Pacific/Midway
 +
Pacific/Nauru
 +
Pacific/Niue
 +
Pacific/Norfolk
 +
Pacific/Noumea
 +
Pacific/Pago_Pago
 +
Pacific/Palau
 +
Pacific/Pitcairn
 +
Pacific/Pohnpei
 +
Pacific/Ponape
 +
Pacific/Port_Moresby
 +
Pacific/Rarotonga
 +
Pacific/Saipan
 +
Pacific/Samoa
 +
Pacific/Tahiti
 +
Pacific/Tarawa
 +
Pacific/Tongatapu
 +
Pacific/Truk
 +
Pacific/Wake
 +
Pacific/Wallis
 +
Pacific/Yap
 +
Poland
 +
Portugal
 +
ROC
 +
ROK
 +
SST
 +
Singapore
 +
SystemV/AST4
 +
SystemV/AST4ADT
 +
SystemV/CST6
 +
SystemV/CST6CDT
 +
SystemV/EST5
 +
SystemV/EST5EDT
 +
SystemV/HST10
 +
SystemV/MST7
 +
SystemV/MST7MDT
 +
SystemV/PST8
 +
SystemV/PST8PDT
 +
SystemV/YST9
 +
SystemV/YST9YDT
 +
Turkey
 +
UCT
 +
US/Alaska
 +
US/Aleutian
 +
US/Arizona
 +
US/Central
 +
US/East-Indiana
 +
US/Eastern
 +
US/Hawaii
 +
US/Indiana-Starke
 +
US/Michigan
 +
US/Mountain
 +
US/Pacific
 +
US/Pacific-New
 +
US/Samoa
 +
UTC
 +
Universal
 +
VST
 +
W-SU
 +
WET
 +
Zulu</syntaxhighlight>
 +
 +
UCalendarクラスやCalendarクラスの使い方はICUのサイトを確認して下さい。なんやかんやで長い記事になっているせいで忘れられているかもしれませんが、ここでは文字列操作に関する情報を中心に扱っています。ちなみにICUのサイトを見てもクラス仕様書がきっちりのっているものの個別の関数の具体的な使い方についてはあまり触れられていません。関数名と機能から、あぁこういう風に使って欲しいんだなっていうのを感じ取るスキルが求められます。なので自分もカレンダーのロケール名指定方法の詳細な一覧は入手できませんでした。もしわかった人がいたら、各自のブログやWikiで情報を発信して下さい。よろしくお願いします。たぶんICUをここまで掘り下げて使っている人はいないはず。上記に記述した各タイムゾーンやロケールの一覧を取得するにはStringEnumerationやUEnumerationクラスの使い方を理解したり、Locale、Timezoneクラスの構造を理解することが求められると思います。頑張ってください。
  
 
=='''文字列の抽出'''==
 
=='''文字列の抽出'''==

2014年10月19日 (日) 00:00時点における版



個人用ツール
名前空間

変種
操作
案内
ツールボックス