Microsoft Build 2019 in Seattle #1

米Micosoftが主催する開発者カンファレンスが毎年米国で開催されます。Microsoft Buildです。今年も去年と同じ場所の米国ワシントン州のシアトルで開催されました。会場の雰囲気などを報告したいと思います。なお、この投稿では基調講演やブレイクアウトセッションの内容にはほぼ触れていません。

“Microsoft Build 2019 in Seattle #1” の続きを読む

Japanese Calendar Test 1.0.0 (和暦テスト 1.0.0)

Japanese Calendar Test Tool (和暦テストツール) 1.0.0 のダウンロードページです。

上記の”Verify CAPTCHA to Download”内の”DOWNLOAD”リンクからダウンロードできます。もし、”Verify CAPTCHA to Download”内に、”私はロボットではありません”と表示されている場合は、チェックを入れて、指示のある画像を選択してください。画像を正しく選択するとダウンロードできます。

このテストツールについて

WIN32 APIを使った、日付データから和暦テキスト文字列の相互変換に関する動作の確認ができます。このツールは、Nativeアプリなので.NET frameworkのAPIの動作確認はできません。

このバージョンについて

このツールの1回目のリリースです。このバージョンでは、以下の機能を実装しました。

  • 日付データから日付テキスト文字列に変換するAPIの動作確認
    • GetDateFormat()
    • VarBstrFromDate()
  • 日付テキスト文字列から日付データへ変換するAPIの動作確認
    • VarDateFromStr()

下記がこのツールのメイン画面です。

Japanese Calendar Test 1.0.0 – メイン画面

機能の説明

「日付→文字列」グループボックス領域

この領域は、日付データから日付テキスト文字列へ変換するWin32 APIをテストできます。

テストできるAPIは、GetDataFormat()VarBstrFromDate()です。

中央の列は「今日の日付」を日付テキスト文字列へ変換して表示します。右側の列は「日付選択コントロールで選択した日付」を日付テキスト文字列へ変換して表示します。ここで選択する日付で、明治、大正、昭和、平成、令和に相当する年月日を選択すると、それぞれの和暦への変換のテストができます。

GetDataFormat()

このWin32 APIは下記のシグネチャーで定義されています。

int GetDateFormat(
  _In_ LCID Locale,
  _In_ DWORD dwFlags,
  _In_opt_ const SYSTEMTIME *lpDate,
  _In_opt_ LPCTSTR lpFormat,
  _Out_opt_ LPTSTR lpDateStr,
  _In_ int cchDate
);

第1引数Localeには、以下の固定値を設定しています。これは、日本ロケールを表します。

  • MAKELCID(LANG_JAPANESE, SORT_DEFAULT)

第2引数dwFlagsには、4つのバリエーションで実行しています。

  • DATE_SHORTDATE
  • DATE_LONGDATE
  • DATE_SHORTDATE | DATE_USE_ALT_CALENDAR
  • DATE_LONGDATE | DATE_USE_ALT_CALENDAR

前者2つは、通常のカレンダー、後者二つは代替カレンダー(代替歴)を指定しています。

日本ロケールの場合、Windowsの既定値は、前者二つが西暦、後者二つが和暦となります。ただし、ユーザー設定により既定値以外のものになることもあります。

VarBstrFromDate()

このWin32 APIは下記のシグネチャーで定義されています。

HRESULT VarBstrFromDate(
  _In_ DATE dateIn,
  _In_ LCID lcid,
  _In_ ULONG dwFlags,
  _Out_ BSTR *pbstrOut
);

第2引数Localeには、以下の固定値を設定しています。これは、日本ロケールを表します。

  • MAKELCID(LANG_JAPANESE, SORT_DEFAULT)

第3引数dwFlagsには、以下の固定値を設定しています。これは、時間を対象とせず、日付のみを対象とすることを表します。

  • VAR_DATEVALUEONLY

「文字列→日付」グループボックス領域

この領域は、日付データから日付テキスト文字列へ変換するWin32 APIをテストできます。

テストできるAPIは、VarDateFromStr()です。

左側のエディットコンボボックスの値をWin32 APIで解釈して、解釈した結果を右側に西暦で表示します。括弧の中は、解釈した日付データを再度GetDataFormat()で和暦に変換した文字列となります。

エディットコンボボックスで日付文字列を指定します。値は、プルダウンリストから文字列を選んで指定してもよいですし、文字列を直接入力してもよいです。プルダウンリストには、慶応以降の和暦の始まりと終わりを列挙してあります。

VarDateFromStr()

このWin32 APIは下記のシグネチャーで定義されています。

HRESULT VarDateFromStr(
  _In_ LPCOLESTR strIn,
  _In_ LCID lcid,
  _In_ ULONG dwFlags,
  _Out_ DATE *pdateOut
);

第2引数Localeには、以下の固定値を設定しています。これは、日本ロケールを表します。

  • MAKELCID(LANG_JAPANESE, SORT_DEFAULT)

第3引数dwFlagsには、以下の固定値を設定しています。これは、時間を対象とせず、日付のみを対象とすることを表します。

  • VAR_DATEVALUEONLY

このテストツールの説明は以上です。