【问题标题】:Set value to property c# datetime error format将值设置为属性 c# datetime 错误格式
【发布时间】:2019-01-30 19:09:58
【问题描述】:

当您在类的属性中选择数据值时,会生成以下错误“输入字符串格式不正确”。

我正在转换图像中的日期,它生成的日期是正确的,但是在分配时会生成错误。

我将它转换为 DateTime 并将其创建为新的,但仍然发生错误。

使用Scheduled = sd时也会发生同样的情况,

我正在使用 asp.net 核心

【问题讨论】:

  • 旁注:应该是scheduled = sd,无需调用ConvertToDateTime(sd),因为sd 已经是DateTime 实例。
  • 您不需要将DateTime 转换为DateTime。错误是抱怨string,所以它可能是其他项目之一。 collection["CompanyId"]collection["GuardId"]collection["DriverId"] 在运行时的值是多少?也许您应该首先在这些项目上使用int.TryParse,以确保它们具有有效值。
  • 使用Scheduled = sd时也会出现同样的情况,
  • 为了让我们能够正确地帮助您,请提供collection 的值以及一些示例代码和完整的堆栈跟踪或异常详细信息。正如下面的答案所述,异常详细信息将包含引发异常的行,并且很可能不会在 Convert.ToDateTime 语句中引发。

标签: c# asp.net datetime asp.net-core datetime-format


【解决方案1】:

1. Convert.ToDateTime 困扰着我,虽然没有抛出这个异常。

首先,您不应在日期时间对象上调用 Convert.ToDateTime。 它不会抛出异常,但也不会进行任何转换。

在此处参考MSDN Documentation

2。该异常有明确的细节表明无法将字符串转换为数字

堆栈跟踪显示“System.Number.StringToNumber”转换失败。

所以它是其他 3 个字符串属性之一,您正在尝试将它们转换为 Int64 或 long。

如果您在调试模式下运行解决方案,您将通过行号知道哪个属性。

3.如果您的值是整数字符串(例如 "10" ),即使它不起作用,那么机器的文化设置存在问题。

请参考完整的thread here

这是说,有时您的从“10”到整数值 10 的转换会失败,因为某些注册表设置设置不正确。您可以通过以下方式更正它们:

虽然可以直接编辑问题键的值, 首选方法是将区域设置更改为不同的 地区/语言,然后将其重置为所需的设置:

  1. 从控制面板打开区域和语言选项小程序。
  2. 注意当前格式。
  3. 将当前格式更改为英语(澳大利亚)
  4. 点击应用。
  5. 将当前格式更改为注明的格式,例如英语(美国)。
  6. 单击应用,然后单击确定。

这应该可以解决您的问题。

【讨论】:

  • 使用Scheduled = sd时也会出现同样的情况,
  • 这就是我所说的,该语句不会导致错误。错误出现在您将 CompanyId、DriverId 或 GuardID 转换为 long 的其余语句中。
  • 是的,你是对的。错误出现在 GuardId 我使用 GuardId = !string.IsNullOrEmpty(collection["GuardId"]) ? Convert.ToInt64(collection["GuardId"]) : 0 并解决 @Manoj Choudhari 谢谢
  • 我很高兴能提供帮助。如果您认为这有助于您解决错误,请将其标记为答案。
猜你喜欢
  • 2016-03-13
  • 2010-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-04
  • 2012-02-19
相关资源
最近更新 更多