• ベストアンサー

VC++  System::Stringに変換するには?

現在VisualC++ ExpressEditionを使って、C++の勉強をしながら万年カレンダーを作ろうとしていています。 ひとまずカレンダーの表示に使う月・日・曜日をDateTime::Nowから取り出したいのですが、 DateTime d1 = DateTime::Now.AddMonths; label1->Text = d1.ToShortTimeString; と試しにlabelに現在の月を表示させようとしたところ、 「1 番目の引数を 'System::String ^(__clrcall System::DateTime::* )(void)' から 'System::String ^' に変換できません。」 というエラーメッセージとともに弾かれてしまいます。 どこをどう変えればよいのか教えてください。 勉強を始めるのに買ってきた参考書では、DateTime::Now.ToLongTimeString;で日付から時刻まで繋げて表示する方法しか載っていませんでした(索引にもDateTime::Nowのみ) PCで検索しようとしても別の言語や参考書のHPが大量に引っかかって困っています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

DateTime d1 = DateTime::Now; label1->Text = d1.ToString("yyyy年MM月dd日(ddd)dddd"); を試そう(実際にやってみた訳じゃないのでダメかもしんない)

35a94
質問者

お礼

回答ありがとうございます。 試しにやってみたらきちんと表示されました。 "yyyy"などのみで正しく表示されることが確認できたので、これを利用させていただきます。 回答頂きましたお二方、ありがとうございます。

その他の回答 (1)

回答No.1

VBとちがうのでカッコをつけてください。 label1->Text = d1.ToShortTimeString(); ちなみにエラーの内容は、 (String^型変数)に (引数を取らなく、String^を返すDateTimeクラスの関数=(デリゲード)) を代入できませんという趣旨のものです。

35a94
質問者

お礼

ありがとうございます。 エラー内容もStringに変換できていない、ということしか分からなかったので助かりました。 ()をつけたらコンパイルは通るようになりました。 しかし今度はSystem::DateTime::Now.AddMonthsに引数リストを要求されました。 DateTime d1 = DateTime::Now.AddMonths(0); label1->Text = d1.ToString(); と入れてみると結果が「2009/03/09 16:36:34」となってしまい、どうやらAddMonthsでは月の部分を取り出すことにはならないようです。 かといってNowをMonthなどに換えてもエラーが出て・・・ 別の関数があるのでしょうか?

関連するQ&A