- 題名: 和暦→西暦変換
- 日時: 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]
過去の掲示板調べてみたんですが、レベルが高すぎて何を書いてらっしゃるのか分かりませんでした…。 質問です。 ********************************************************** Sub cal1_SelectionChanged(ByVal sender As Object, _ ByVal e As System.EventArgs) 'カレンダー内の日付をクリックして、変数に日付を格納する Dim dDate As Date dDate = sender.selecteddate.tolongdatestring Lable1.Text = Format(dDate, "yyyy/mm/dd(ddd)") End Sub ********************************************************** "2006年5月16日"を"2006/05/16(Tue)"に変更する方法を教えてください。 お願いいたします。