Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.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#_String_Datetime_Input_Casting - Fatal编程技术网

C# 奇怪的错误:输入字符串的格式不正确

C# 奇怪的错误:输入字符串的格式不正确,c#,string,datetime,input,casting,C#,String,Datetime,Input,Casting,我遇到了这个错误:输入字符串的格式不正确,试图将一个值转换为datetime,或将该值的一部分转换为int。但仅使用“8/5/2025”之类的值 这是我的第一个代码: string MyFormat = "MM/dd/yyyy"; string MyDate = string.Empty; MyDate = MyObject.ValueX.ToString(); string MyFormatedDate = Convert.toDateTime(MyDate).ToString(M

我遇到了这个错误:输入字符串的格式不正确,试图将一个值转换为datetime,或将该值的一部分转换为int。但仅使用“8/5/2025”之类的值

这是我的第一个代码:

string MyFormat = "MM/dd/yyyy";  
string MyDate = string.Empty;  
MyDate = MyObject.ValueX.ToString();  
string MyFormatedDate = Convert.toDateTime(MyDate).ToString(MyFormat);
我认为这是datetime等的格式,但后来我意识到这不是因为我更改了代码,试图创建一个datetime对象,其部分如下:

string[] Dates= MyDate.Split('/'); 
String myYear= Dates[2].ToString().Trim(); 
String myMonth= Dates[0].ToString().Trim();
String myDay= Dates[1].ToString().Trim();   
int YearInt= Convert.ToInt32(myYear); 
int MontInt= Convert.ToInt32(myMonth); 
int DayInt= Convert.ToInt32(myDay);
DateTime newDate = new DateTime(anioInt, mesInt,diaInt);
我遇到了相同的错误:此行中的输入字符串格式不正确:

int YearInt = Convert.toInt32(myYear);
当myYear=“2025”时,如果a这样做:Convert.toInt32(“2025”),我没有问题,但为什么我会出现这个异常

这仅在这些日期出现时出现

这是MyObject使用此类:

[DataContract]
    public class LabelField
    {
       ..
        [DataMember(Name = "ValueX")]
        public string ValueX{ get; set; }
       ..
    }

事实证明,我的ValueX有我在调试器中看不到的不可见字符,所以我只使用了Regex.Replace,它现在就可以工作了

String myYear= Regex.Replace(Dates[2], @"[^\x20-\x7F]", "");
String myMonth= Regex.Replace(Dates[0], @"[^\x20-\x7F]", "");
String myDay= Regex.Replace(Dates[1], @"[^\x20-\x7F]", "");
直到我检查了变量的长度,我才注意到


我希望这个解决方案能对某些人有所帮助:)

事实证明,我的ValueX有我在调试器中没有看到的不可见字符,所以我只使用了Regex.Replace,现在它就可以工作了

String myYear= Regex.Replace(Dates[2], @"[^\x20-\x7F]", "");
String myMonth= Regex.Replace(Dates[0], @"[^\x20-\x7F]", "");
String myDay= Regex.Replace(Dates[1], @"[^\x20-\x7F]", "");
直到我检查了变量的长度,我才注意到


我希望此解决方案能帮助某些人:)

使用调试器,您将更快地发现问题。您确定ValueX中的值吗?记住字符串不需要ToString()(只是有点没用)你好,Steve,谢谢,但我正在使用调试器ValueX是字符串,值是“8/5/2025”,问题是当我尝试使用变量转换时不起作用,但在调试器中,我尝试使用变量的值转换时起作用。这没有道理。这样地。转换为32(myYear);并转换为第32条(“2025年”);您是否100%确定ValueX是您认为的字符串?使用调试器,您将更快地发现问题。您确定ValueX中的值吗?记住字符串不需要ToString()(只是有点没用)你好,Steve,谢谢,但我正在使用调试器ValueX是字符串,值是“8/5/2025”,问题是当我尝试使用变量转换时不起作用,但在调试器中,我尝试使用变量的值转换时起作用。这没有道理。这样地。转换为32(myYear);并转换为第32条(“2025年”);您是否100%确定ValueX是您认为的字符串?很高兴解决您的问题,但我认为您应该删除您的问题,因为它对未来的读者没有帮助。很高兴解决您的问题,但我认为您应该删除您的问题,因为它对未来的读者没有帮助。