将系统日期格式转换为c#中可接受的日期格式



如何将系统日期格式(如3/18/2014)转换为DateTime中可读的格式?我想从两个日期中获得总天数,这将来自两个文本框。

我试过这个语法:

DateTime tempDateBorrowed = DateTime.Parse(txtDateBorrowed.Text);
DateTime tempReturnDate = DateTime.Parse(txtReturnDate.Text);
TimeSpan span = DateTime.Today - tempDateBorrowed;
rf.txtDaysBorrowed.Text = span.ToString();

但是tempDateBorrowed总是返回DateTime变量的最小日期。我认为这是因为DateTime不能正确解析我的系统日期格式。因此,它错误地显示了天数。例如,如果我尝试分别输入3/17/2014和3/18/2014,我总是得到-365241天,而不是1。

编辑:我希望我的地区是非特定的,所以我没有为我的日期格式设置一个特定的地区。(顺便说一下,我的系统格式是en-US)

试试DateTime.ParseExact方法。

参见下面的示例代码(我使用字符串代替文本框,因为我使用控制台应用程序来编写这段代码)。希望对你有帮助。

class Program
    {
        static void Main(string[] args)
        {
            string txtDateBorrowed = "3/17/2014";
            string txtReturnDate = "3/18/2014";
            string txtDaysBorrowed = string.Empty;
            DateTime tempDateBorrowed = DateTime.ParseExact(txtDateBorrowed, "M/d/yyyy", null);
            DateTime tempReturnDate = DateTime.ParseExact(txtReturnDate, "M/d/yyyy", null);
            TimeSpan span = DateTime.Today - tempDateBorrowed;
            txtDaysBorrowed = span.ToString();
        }
    }

ToString不是Days

时间间隔。TotalDays地产

您可以尝试在文本框中指定日期时间的格式,如

DateTime tempDateBorrowed = DateTime.ParseExact(txtDateBorrowed.Text.Trim(), "M/d/yyyy", CultureInfo.InvariantCulture);
DateTime tempReturnDate = DateTime.ParseExact(txtReturnDate.Text.Trim(), "M/d/yyyy", CultureInfo.InvariantCulture);

也可以检查文本框中的值是否有效

我的第一个想法是用DateTimePicker或等效的控件替换TextBox控件,这取决于您正在开发的平台。将字符串转换为日期或将日期转换为字符串比最初看起来更麻烦。


或者您可以尝试使用DateTime.ParseExact代替,以指定确切的期望格式:

DateTime tempDateBorrowed =
    DateTime.ParseExact("3/17/2014", "M/dd/yyyy", CultureInfo.InvariantCulture);

或者您可以在调用DateTime.Parse:

时指定特定的区域性
var tempDateBorrowed = DateTime.Parse("17/3/2014", new CultureInfo("en-gb"));
var tempDateBorrowed = DateTime.Parse("3/17/2014", new CultureInfo("en-us"));

在使用DateTime.Parse解析日期之前,尝试将日期格式化为iso 8601或类似的格式。

2014-03-17T00:00:00应该与DateTime.Parse一起工作。("yyyy-MM-ddTHH: mm: ssZ")

试试这个:

if(DateTime.TryParseExact(txtDateBorrowed.Text, "M/d/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out tempDateBorrowed))
{
    TimeSpan span = DateTime.Today - tempDateBorrowed;
}

相关内容

  • 没有找到相关文章

最新更新