コメント
コメントの投稿
※名前とタイトルが入力されていないコメントでは他のコメントとの区別ができません。
入力されていないコメントには返信しませんのであらかじめご了承くださいませ。
Imports System.Globalization
Namespace Library
Public Class CalendarUtility
''' <summary>
''' 全ての元号一覧を取得する
''' </summary>
''' <returns></returns>
Public Shared Function GetEraNameList() As List(Of String)
Dim calendar As New JapaneseCalendar()
Dim culture = New System.Globalization.CultureInfo("ja-JP", False)
culture.DateTimeFormat.Calendar = calendar
Dim dtNow As DateTime = DateTime.Now
'(1)1901年から現在までの年のリストを取得し、年の降順に並べかえます。
'(2)120年程の年リスト全てに対して元号を取得します。
'(3)元号のリストをDistinctします。
Return Enumerable.Range(1901, dtNow.Year - 1901) _
.OrderByDescending(Function(r) r) _
.Select(Function(r)
Return New DateTime(r, _
dtNow.Month, _
dtNow.Day) _
.ToString("gg", culture)
End Function) _
.Distinct _
.ToList()
End Function
''' <summary>
''' 日付に対する元号を取得する
''' </summary>
''' <returns></returns>
Public Shared Function GetEraName(ByVal pDate As DateTime) As String
Dim calendar As New JapaneseCalendar()
Dim culture = New System.Globalization.CultureInfo("ja-JP", False)
culture.DateTimeFormat.Calendar = calendar
Return pDate.ToString("gg", culture)
End Function
End Class
End Namespace
Public Class EraTest
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Me.IsPostBack Then
'元号をリテラルにセット
Me.ltrEraName.Text = CalendarUtility.GetEraName(DateTime.Now)
'元号の一覧をDropDownListにセット
Me.ddlEraList.DataSource = CalendarUtility.GetEraNameList()
Me.ddlEraList.DataBind()
'元号リストにIntegerタイプの値(Value)を設定したい場合は、以下のようにListItemの配列をDDLに追加します。
Dim i As Integer = 0
Me.ddlEraList.Items.Clear()
Me.ddlEraList.Items.AddRange( _
CalendarUtility.GetEraNameList().Select(Function(r)
i += 1
Return New ListItem(r, i.ToString)
End Function).ToArray() _
)
End If
End Sub
End Class
※名前とタイトルが入力されていないコメントでは他のコメントとの区別ができません。
入力されていないコメントには返信しませんのであらかじめご了承くださいませ。