- 題名: 和暦→西暦変換
- 日時: 2006/05/16 16:29:02
- ID: 15773
- この記事の返信元:
- (なし)
- この記事への返信:
- [15775] Re[1]: 和暦→西暦変換2006/05/16 16:35:05
- ツリーを表示
じゃんぬねっとさん返信ありがとうございます! > "2006年5月16日" は、和暦ではなく西暦ですので、「和暦 -> 西暦変換」ではないですね。 …あ、そうですね(^^;) お恥ずかしい… > System.DateTime 構造体に Parse して、初めて書式が整形できます。 > > Dim st As String = "2006年5月16日" > Dim dt As System.DateTime = System.DateTime.Parse(st) > > MessageBox.Show(dt.ToString("yyyy/mm/dd(ddd)")) > > これは簡単な例です。 > 実際には ParseExact を使って厳密に行う必要があります。 まず、上記のとおり、コーディングしてみました。 ************************************************************* Sub cal1_SelectionChanged(ByVal sender As Object, _ ByVal e As System.EventArgs) Dim st As String = "2006年5月16日" Dim dt As System.DateTime = System.DateTime.Parse(st) Label1.Text = dt.ToString("yyyy/mm/dd(ddd)") End Sub ************************************************************* しかし、Label1.Textには "2006/00/16(火)" が格納されちゃってます… "月"の部分が "06" ではなくなってます。 変数"dt"には、"#5/16/2006#" が入ってます。 …おかしいです…(T_T)
みなさん回答ありがとうございます!こんなにたくさん…(T_T)v 出来ました!…ここまでは。 ********************************************************** Sub cal1_SelectionChanged(ByVal sender As Object, _ ByVal e As System.EventArgs) Dim st As String = sender.selecteddate.tolongdatestring Dim dt As System.DateTime = System.DateTime.Parse(st) Label1.Text = dt.ToString("yyyy/MM/dd(ddd)") End Sub ********************************************************** で、あと少しです。 この状態では、"2006/05/16(火)" になります。 (火)→(Tue)に変換したいのですが、も少しだけ助けてください…m(__)m
MSDN見ていろいろやってみました! 撃沈…さっぱり理解できません…。 エラー三昧です ***************************************************************** Sub cal1_SelectionChanged(ByVal sender As Object, _ ByVal e As System.EventArgs) Dim dtfi As DateTimeFormatInfo = New CultureInfo("en-US", False).DateTimeFormat Dim st As String = sender.selecteddate.tolongdatestring Label1.Text = DateTime.ParseExact(st, "yyyy/MM/dd(ddd)", dtfi) End Sub ***************************************************************** 自分でも何がしたいの?って感じです…
出来たー!訳も分からずに… みなさんありがとうございました! *************************************************************** Sub cal1_SelectionChanged(ByVal sender As Object, _ ByVal e As System.EventArgs) Dim st As String = sender.selecteddate.tolongdatestring Dim ci As CultureInfo = New CultureInfo("en-US") Dim dt As DateTime = DateTime.ParseExact(st, "yyyy年M月dd日", ci) Label.Text = dt.ToString("yyyy/MM/dd(ddd)", ci.DateTimeFormat) End Sub *************************************************************** でも訳わかんない…
あ!…でもこれだと、"2006年5月16日"は正常に"2006/05/16(Tue)"ってなりますけど "2006年6月1日"はエラー出ますよね? > *************************************************************** > Sub cal1_SelectionChanged(ByVal sender As Object, _ > ByVal e As System.EventArgs) > Dim st As String = sender.selecteddate.tolongdatestring > Dim ci As CultureInfo = New CultureInfo("en-US") > Dim dt As DateTime = DateTime.ParseExact(st, "yyyy年M月dd日", ci) > Label.Text = dt.ToString("yyyy/MM/dd(ddd)", ci.DateTimeFormat) > End Sub > *************************************************************** 日付の"日にち"部分が1桁な日付は、エラーが出ちゃいます… やっと出来たと思ったのにぃ…
これでOKですかぁ? ******************************************************************* Sub cal1_SelectionChanged(ByVal sender As Object, _ ByVal e As System.EventArgs) Dim st As String = sender.selecteddate.tolongdatestring Dim ci As CultureInfo = New CultureInfo("en-US") Dim dt As DateTime = DateTime.ParseExact(st, "yyyy年M月d日", Nothing) Label1.Text = dt.ToString("yyyy/MM/dd(ddd)", ci.DateTimeFormat) End Sub *******************************************************************
よく考えたら、Sender.SelectedDate って、DateTime型ではないのでしょうか? いちいちToLongDateStringメソッドで文字列に変換しないでもよいのでは? Sub cal1_SelectionChanged(ByVal sender As Object, _ ByVal e As System.EventArgs) Dim ci As CultureInfo = New CultureInfo("en-US") Label1.Text = Sender.SelectedDate.ToString("yyyy/MM/dd(ddd)", ci.DateTimeFormat) End Sub
回答ありがとうございます! > Sub cal1_SelectionChanged(ByVal sender As Object, _ > ByVal e As System.EventArgs) > Dim ci As CultureInfo = New CultureInfo("en-US") > Label1.Text = Sender.SelectedDate.ToString("yyyy/MM/dd(ddd)", ci.DateTimeFormat) > End Sub > コピーしてデバッグしてみましたが、 〜〜〜.ToString("yyyy/MM/dd(ddd)", ci.DateTimeFormat) の ci.DateTimeFormat 箇所でエラーでした。 ERROR MESSAGE-------->> 'Public ReadOnly Default Property Chars(index As Integer) As Char'に対する引数が多すぎます。 <<---------------------
私のせいでエラーになってしまったようなので、ヒントを出します。 > Label1.Text = Sender.SelectedDate.ToString("yyyy/MM/dd(ddd)", ci.DateTimeFormat) senderをCalender型にキャストしてください。(というか答え。) それといまさらですが、これってASP.NETですよね? きちんと環境を明記してもらわないと、、、
分類:[.NET]