C# 奇怪的错误:输入字符串的格式不正确
我遇到了这个错误:输入字符串的格式不正确,试图将一个值转换为datetime,或将该值的一部分转换为int。但仅使用“8/5/2025”之类的值 这是我的第一个代码: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
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是您认为的字符串?很高兴解决您的问题,但我认为您应该删除您的问题,因为它对未来的读者没有帮助。很高兴解决您的问题,但我认为您应该删除您的问题,因为它对未来的读者没有帮助。