gpt4 book ai didi

c# - 为什么 Convert.ChangeType() 不将日期字符串(以 dd/MM/yyyy 格式)转换为日期时间类型?

转载 作者:太空宇宙 更新时间:2023-11-03 15:36:53 25 4
gpt4 key购买 nike

下面是我打算通过反射填充实体数据的代码。

public static void SetEntityProperty(object entity, DevExpress.Web.ASPxFormLayout formLayoutControl)
{
if (formLayoutControl != null)
{
Type type = entity.GetType();
System.Reflection.PropertyInfo[] properties = type.GetProperties();
System.Data.DataTable dt = new System.Data.DataTable();
foreach (System.Reflection.PropertyInfo pi in properties)
{
var layoutItem = formLayoutControl.FindItemByFieldName(pi.Name);
if (layoutItem != null && layoutItem.CssClass == "ro-item") continue;

var control = formLayoutControl.FindNestedControlByFieldName(pi.Name);
if (control != null && control is DevExpress.Web.ASPxEdit)
{
var targetType = Data.IsNullableType(pi.PropertyType) ? Nullable.GetUnderlyingType(pi.PropertyType) : pi.PropertyType;
try
{
if ((control as DevExpress.Web.ASPxEdit).Value != null)
{
//here (control as DevExpress.Web.ASPxEdit).Value = "19/05/2015" and control is a read only text box
var value = Convert.ChangeType((control as DevExpress.Web.ASPxEdit).Value, targetType);
if (value != null && value is System.String)
{
value = value.ToString().Trim();
(control as DevExpress.Web.ASPxEdit).Value = value;
}
pi.SetValue(entity, value, null);
}
else
{
pi.SetValue(entity, null, null);
}
}
catch (Exception ex)
{
pi.SetValue(entity, value, null);
}
}
else
throw ex;
}
}
}

我在这里做错了什么?我发现了一些与 Convert.ChangeType 相关的其他问题,但所有这些建议都已实现到此代码中。我正在使用 Visual Studio 2013 C#、DevExpress 14.2.6。请帮忙。谢谢。

最佳答案

试试这个:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Globalization;

namespace DateTimeConvert
{
class Program
{
static void Main(string[] args)
{
var text1 = "19/05/2015"; //dd/mm/yyyy format
var text2 = "05/19/2015"; //mm/dd/yyyy format
var result = DateTime.Now;

DateTime.TryParse(text1, out result);
Console.WriteLine(result);

DateTime.TryParse(text2, out result);
Console.WriteLine(result);

//Depending on computer's current culture format this will cause an error due to dd/MM/yyyy CULTURE format
//DateTime date = (DateTime)Convert.ChangeType(text1, typeof(DateTime));

var date = DateTime.ParseExact(text1, "dd/MM/yyyy", CultureInfo.InvariantCulture);
Console.WriteLine(date);

Console.ReadLine();
}
}
}

您正在转换“dd/MM/yyyy”的日期时间格式。这取决于您计算机的文化格式。您可以使用 DateTime.ParseExact 通过 CultureInfo.InvariantCulture 指示正确的格式。

关于c# - 为什么 Convert.ChangeType() 不将日期字符串(以 dd/MM/yyyy 格式)转换为日期时间类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31602696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com