|
■No99695 (河童 さん) に返信 > 【B案】でいきたいです。
たとえばこんな感じでどうでしょう。
private void button1_Click(object sender, EventArgs e) { button1.Text = Date_Week(textBox1.Text, textBox2.Text).ToString(); }
public int Date_Week(DateTime sdate, DateTime edate) { if (sdate > edate) { throw new ArgumentOutOfRangeException(); } return ((edate.Date - sdate.Date).Days / 7) + 1; } public int Date_Week(string sdate, string edate) { Func<string, DateTime> toDate = s => DateTime.ParseExact( s, "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture); return Date_Week(toDate(sdate), toDate(edate)); }
--- ParseExact(s, "yyyyMMdd", null) の部分は ParseExact(s, "yyyyMMdd", InvariantCulture) に差し換えています。
元のコードだと、OS の設定が和暦モードだった場合に "20220501" が 4040年5月1日(火) に誤読されてしまうので。
|