作成日: 2019/04/15 最終更新日: 2019/04/15
文書種別
使用方法
詳細
ActiveReports for .NET では、基本的に.NET Frameworkの日付書式指定文字列を使用して和暦を表示します。
詳細については、関連情報の「日付データを和暦で出力する方法は?」をご確認ください。
ただし、 .NET Frameworkの日付書式指定文字列には年号の略称(平、令、H、R など)に対応するものがありません。
以下の書式で2019年5月1日を表示した場合、すべて「令和01.05.01」になります。(レジストリに令和の情報が登録されていることを前提とします。)
年号の漢字略称は、DateTimeFormat.GetAbbreviatedEraNameメソッドで取得することができます。
DateTimeFormatInfo.GetAbbreviatedEraName(Int32) Method (System.Globalization)
セクションレポートの場合、和暦表記の文字列を取得するメソッドを定義し、セクションのFormatイベントで呼び出します。
◆サンプルコード(VB.NET)
◆サンプルコード(C#)
ページレポート/RDLレポートの場合、[スクリプト]タブにVB.NETのメソッドを定義できます。
Private宣言のメソッドはレポートから呼び出せないため、Publicに変更してください。
TextBoxコントロールのValueプロパティに以下の式を記述して呼び出します。
ただし、.NET Frameworkには年号の英字略称を取得する機能がありません。
「R01.05.01」と表示したい場合は、DateTimeFormat.GetEraメソッドで年号に該当する英字を確認し、独自に変換テーブルを作成してください。
DateTimeFormatInfo.GetEra(String) Method (System.Globalization)
詳細については、関連情報の「日付データを和暦で出力する方法は?」をご確認ください。
ただし、 .NET Frameworkの日付書式指定文字列には年号の略称(平、令、H、R など)に対応するものがありません。
以下の書式で2019年5月1日を表示した場合、すべて「令和01.05.01」になります。(レジストリに令和の情報が登録されていることを前提とします。)
- gyy.MM.dd
- ggyy.MM.dd
- gggyy.MM.dd
年号の漢字略称は、DateTimeFormat.GetAbbreviatedEraNameメソッドで取得することができます。
DateTimeFormatInfo.GetAbbreviatedEraName(Int32) Method (System.Globalization)
セクションレポートの場合、和暦表記の文字列を取得するメソッドを定義し、セクションのFormatイベントで呼び出します。
◆サンプルコード(VB.NET)
Private Sub Detail_Format(sender As Object, e As EventArgs) Handles Detail.Format
TextBox1.Text = getWareki(CType(TextBox1.Value, DateTime))
End Sub
Private Function getWareki(ByVal dt As DateTime) As String
Dim ci As New System.Globalization.CultureInfo("ja-JP")
Dim jp As New System.Globalization.JapaneseCalendar()
ci.DateTimeFormat.Calendar = jp
Dim era As Integer = jp.GetEra(dt)
Dim eraName As String = ci.DateTimeFormat.GetAbbreviatedEraName(era)
Return eraName + dt.ToString("yy.MM.dd", ci)
End Function
TextBox1.Text = getWareki(CType(TextBox1.Value, DateTime))
End Sub
Private Function getWareki(ByVal dt As DateTime) As String
Dim ci As New System.Globalization.CultureInfo("ja-JP")
Dim jp As New System.Globalization.JapaneseCalendar()
ci.DateTimeFormat.Calendar = jp
Dim era As Integer = jp.GetEra(dt)
Dim eraName As String = ci.DateTimeFormat.GetAbbreviatedEraName(era)
Return eraName + dt.ToString("yy.MM.dd", ci)
End Function
◆サンプルコード(C#)
private void Detail_Format(object sender, EventArgs e)
{
TextBox1.Text = getWareki((DateTime)TextBox1.Value);
}
private string getWareki(DateTime dt)
{
var ci = new System.Globalization.CultureInfo("ja-JP");
var jp = new System.Globalization.JapaneseCalendar();
ci.DateTimeFormat.Calendar = jp;
int era = jp.GetEra(dt);
string eraName = ci.DateTimeFormat.GetAbbreviatedEraName(era);
return eraName + dt.ToString("yy.MM.dd", ci);
}
{
TextBox1.Text = getWareki((DateTime)TextBox1.Value);
}
private string getWareki(DateTime dt)
{
var ci = new System.Globalization.CultureInfo("ja-JP");
var jp = new System.Globalization.JapaneseCalendar();
ci.DateTimeFormat.Calendar = jp;
int era = jp.GetEra(dt);
string eraName = ci.DateTimeFormat.GetAbbreviatedEraName(era);
return eraName + dt.ToString("yy.MM.dd", ci);
}
ページレポート/RDLレポートの場合、[スクリプト]タブにVB.NETのメソッドを定義できます。
Private宣言のメソッドはレポートから呼び出せないため、Publicに変更してください。
TextBoxコントロールのValueプロパティに以下の式を記述して呼び出します。
=Code.getWareki(Fields!Field1.Value)
ただし、.NET Frameworkには年号の英字略称を取得する機能がありません。
「R01.05.01」と表示したい場合は、DateTimeFormat.GetEraメソッドで年号に該当する英字を確認し、独自に変換テーブルを作成してください。
DateTimeFormatInfo.GetEra(String) Method (System.Globalization)
関連情報
旧文書番号
83878