私はそれが完全な日付である場合にのみ、年を表示します。
DateTime value;
if(DateTime.TryParse(ed.IDAFrom, out value))
{
Int year = value.Year;
}
あなたが文化を気にしている場合:
CultureInfo = CultureInfo.CreateSpecificCulture("en-US"); // Or whichever culture you need
if (DateTime.TryParse(ed.IDAFrom, culture, DateTimeStyles.None, out value))
{
int year = value.Year;
}
ユーザーは、年のみまたは完全な日付を入力して、このメソッドを使用するには、いずれかのオプションを持っている場合:
public static string GetDateTime(string value)
{
DateTime date;
string dateString = ""; // Empty by default
// If full date is given, this will succeed
if (DateTime.TryParse(value, out date))
{
dateString = date.ToShortDateString();
}
// If only year is given then this will succeed
else if (DateTime.TryParseExact(value,
"yyyy",
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out date))
{
dateString = date.ToShortDateString();
}
return dateString;
}
編集
今、あなたはあなたの質問にいくつかのより多くのコードが追加されていることを、ここでのLINQを使用してそれを行う方法です:
int i = 0;
int j = 0;
var rows = list.Select(exam =>
{
string inclusiveDates = string.Format("{0} - {1}", GetDateTime(exam.IDAFrom), GetDateTime(exam.IDATo));
return new
{
Id = ++i,
Cell = new object[] { ++j, inclusiveDates }
};
})
.ToList();
そして、ここでは `ed.IDAFromでどのようなデータ型の使用例
class Program
{
public class Exam
{
public string IDAFrom { get; set; }
public string IDATo { get; set; }
}
public static string GetDateTime(string value)
{
DateTime date;
string dateString = ""; // Empty by default
// If full date is given, this will succeed
if (DateTime.TryParse(value, out date))
{
dateString = date.ToShortDateString();
}
// If only year is given then this will succeed
else if (DateTime.TryParseExact(value,
"yyyy",
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out date))
{
dateString = date.ToShortDateString();
}
return dateString;
}
static void Main(string[] args)
{
var list = new List<Exam> { new Exam { IDAFrom = "1999", IDATo = null },
new Exam { IDAFrom = DateTime.Now.ToShortDateString(), IDATo = DateTime.Now.AddDays(5).ToShortDateString() } };
int i = 0;
int j = 0;
var rows = list.Select(exam =>
{
string inclusiveDates = string.Format("{0} - {1}", GetDateTime(exam.IDAFrom), GetDateTime(exam.IDATo));
return new
{
Id = ++i,
Cell = new object[] { ++j, inclusiveDates }
};
})
.ToList();
foreach (var item in rows)
{
Console.WriteLine("{0}\t{1}\t{2}", item.Id.ToString(), item.Cell[0], item.Cell[1]);
}
Console.Read();
}
}
です'?それは文字列としてデータベースに格納されていますか? – krillgar
'bool isYearOnly =(ed.IDAFrom!= null)&&(ed.IDAFrom.Trim()。Length == 4);' – Blorgbeard
IDAFromとは何ですか? – CodingYoshi