Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 日期时间格式异常错误_C#_Compact Framework_.net Cf 3.5 - Fatal编程技术网

C# 日期时间格式异常错误

C# 日期时间格式异常错误,c#,compact-framework,.net-cf-3.5,C#,Compact Framework,.net Cf 3.5,文本类似于“09.09.2011” 但我得到了一个异常错误。我必须解析日期吗?请使用dd.MM.yyyy格式字符串尝试DateTime.ParseExact DateTime datuMDokumenta = Convert.ToDateTime(txtDatumDokum.Text); 这不好看,无论如何,试试这个: DateTime.ParseExact(txtDatumDokum.Text, "yyyyMMdd", CultureInfo.InvariantCulture, DateT

文本类似于“09.09.2011”


但我得到了一个异常错误。我必须解析日期吗?

请使用dd.MM.yyyy格式字符串尝试DateTime.ParseExact

DateTime datuMDokumenta = Convert.ToDateTime(txtDatumDokum.Text);

这不好看,无论如何,试试这个:

 DateTime.ParseExact(txtDatumDokum.Text, "yyyyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.None);
您的代码:

string s = "09.09.2011";
DateTime dt = Convert.ToDateTime(
    s.Replace(".",
    new System.Globalization.DateTimeFormatInfo().DateSeparator));
尝试将此更改为:

DateTime datuMDokumenta = Convert.ToDateTime(txtDatumDokum.Text);
当您打印日期/时间时

打印datuMDokumenta.Text

您需要告诉我们为什么文本输入使用此格式。如果是因为用户以这种方式输入,那么您需要确保格式与提供的格式匹配。更改区域性(通过设置
Thread.CurrentCulture
)设置为适当的值将解决您的问题

如果不管输入的格式是什么,都要对其进行解析,则需要先进行一些手动处理(可能会使用
字符串从输入中删除空格和其他分隔符。替换
),然后尝试使用和已知的格式字符串解析日期


但这完全取决于为什么输入具有这种格式,以及为什么应用程序的当前区域性与之不匹配。

您可以尝试一下,TryParse可以避免解析异常。。然后您只需要检查结果以确保它已被解析

DateTime datuMDokumenta = Convert.ToDateTime(txtDatumDokum);
您必须确定这对于您的应用程序是否是一个好的解决方案

请参见此示例:

根据您提供的日期判断,您需要包含一个区域性,de de接受01.01.11类型的日期,但我不确定您真正想要使用哪一个,您需要决定。。代码如下所示:

DateTime datuMDokumenta;
bool result = DateTime.TryParse(txtDatumDokum.Text, out datuMDokumenta);
可以在此处找到区域性列表,请为您选择合适的区域性:


另外,这段代码需要做更多的工作,但很难破解。假设您在文本框上使用自由文本条目,您不希望抛出异常。

是的,您必须在当前区域性中解析输入日期

using System.Globalization;

DateTime datuMDokumenta;
bool result = DateTime.TryParse(txtDatumDokum.Text, CultureInfo.CreateSpecificCulture("de-DE"), DateTimeStyles.None, out datuMDokumenta);

DateTime dt=Convert.ToDateTime(txtDatumDokum.Text)


这是正确的…在compact framework 3.5下的反序列化调用过程中没有ISSUE

,我以前遇到过一些意外行为

我已经从使用OpenNETCF序列化类转换为框架XML序列化类。在执行此操作时,默认时间格式已更改,并且属性/公共成员的顺序已更改。长话短说,我已经公开了一个文本属性,它可以将我的日期时间转换回VB6应用程序所期望的格式

string[] format = new string[] { "dd.MM.yyyy" };
string value = "09.09.2011";
DateTime datetime;

if (DateTime.TryParseExact(value, format, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.NoCurrentDateDefault, out datetime))
      //Valid
else
     //Invalid

Date.blah不起作用。dumbDate.胡说八道。奇怪。

我在dotNet4.0中没有发现异常。请尝试检查是否在那里传递NULL或空字符串;thx它对我有用。所以,我必须始终使用DateTime.ParseExact,即使date像dd.MM一样有效。yyyy@senzacionale您不必使用parseexact,但如果您只打算以一种特定格式接收日期,则建议您尝试为您的区域使用正确的区域性,如果您不确定,则使用de de,这应该可以很好地工作,而不必使用parseexact,查看我的答案。您确定
ConvertToDateTime()
接受文本框作为参数吗?它将抛出错误。您不能使用没有扩展名的文本框。因为我使用date.ToString(“dd.MM.yyyy”)。如果我使用ToSortDateString,那么我得到的是2011年9月8日,这是不正确的。我们的日期一定是08.09。2011@senzacionale:如果问题是关于CF 3.5的,请将其标记为CF 3.5。
            Dim dumbDate As New Date
            Dim formats() As String = {"yyyy-MM-ddTHH:mm:ss.fffzzz", _
                                       "yyyy-MM-dd HH:mm:ss:fffffffzzz"}

            _datetimeTaken = dumbDate.ParseExact(value, formats, CultureInfo.InvariantCulture, DateTimeStyles.None)

            ' There is something wrong with compact framework during the Serialization calls. 
            ' calling the shared method Date.Parse or Date.ParseExact does not produce the same
            ' result as calling a share method on an instance of Date. WTF?!?!?!
            ' The below will cause a "Format" exception.
            '_datetimeTaken = Date.ParseExact(value, formats, CultureInfo.InvariantCulture, DateTimeStyles.None)
    public static void Main(string[] args)
    {
        var dt = new DateTime(2018, 04, 1);
        Console.WriteLine(dt);
       
        string month = dt.ToString("MMMM");
        Console.WriteLine(month);               //April

        month = dt.ToString("MMM");
        Console.WriteLine(month);              //Apr

        month = dt.ToString("MM");
        Console.WriteLine(month);             //04

        Console.ReadKey();
    }