Archive for 5月 4th, 2017

UWPのDateTimeFormatterの謎..(^^;..

木曜日, 5月 4th, 2017

UWPのDateTimeFormatterで躓いた、

デバッガで調べても、きちんとした日付が「2017年5月4日」と帰ってきているのに、wcsmbs_s関数でshiftjisに落とそうとすると、ヌルポが帰ってくる。

試しに、wchar_t *test =L”2017年5月4日”;というコードでwcsmbs_s関数に突っ込むと正常に変換される。

Platform::Stringでデバッガで追うのだが、デバッガで見る限りには、L”2017年5月4日”という式が見えるので徹底的に調べた、

String ^DTF_STR=DateTimeFormatter->format(DataTimeValue);

このコードだとだめで

String ^WIDE_STR=L"2017年5月4日";

だと、OKなので、

wchar_t wzC_DTF[20],wzC_WID[20];
wcscpy_s(wzC_DTF,DTF_Str->Data());
wcscpy_s(wzC_WID,WIDE_Str->Data());

みたいな感じでデバッガで調べた。それが、

左が、DTF_STRの配列、右がWID_STRの配列、ということで、「8206」というコードが混入しているのがわかる

ということで、これが原因かということで、

	wcscpy_s(wzRs, DateStr->Data());
	int n = 0;
	for (int i = 0; i < wcslen(wzRs); i++)
	{
		if (wzRs[i] != 8206)
		{
			wzRs2[n] = wzRs[i];
			n++;
		}
	}
	wzRs2[n] = 0;

、というメンドイルーチンを組み込んで無事に事なきを得ましたです。(^^;…

ちかれたび。