【发布时间】:2018-10-19 02:54:26
【问题描述】:
我从 XML 文件中获取到期日期,然后将其转换为 DateTime。这适用于 调试 模式。但是,在它被部署后,它会返回一个错误。
public LabelInfo ParseLabelsingalData(XmlNode Llist)
{
LabelInfo labelinfor = new LabelInfo();
labelinfor.ID = Llist.Attributes["Name"].Value;
labelinfor.Name = Llist.Attributes["Name"].Value;
labelinfor.ExpiryDate =
Convert.ToDateTime(Llist.Attributes["ExpiryDate"].Value);
}
我从 xml 中获取日期,例如“31/01/2018”,返回错误是 - 字符串未被识别为有效日期时间。在这种情况下,我找到了一个解决方案,并尝试使用此函数转换日期时间。
string format = "dd/MM/yyyy";
if (DateTime.TryParseExact(dtime, format,
System.Globalization.CultureInfo.InvariantCulture, DateTimeStyles.None, out
Temdate))
{
labelinfor.MinimumExpiryDate = Temdate;
}
但是,当我将此输出值等于对象变量时,它会显示日期和月份交换。
labelinfor.MinimumExpiryDate = Temdate;
SysLog.WriteLog("Trace ExpiryDate - " + labelinfor.ExpiryDate);- 01/31/2018
【问题讨论】:
-
这是一个控制台应用程序吗?网站?你在哪个国家?您的登录在本地 PC 上使用什么日期格式/区域设置?运行不成功时使用什么日期格式?
-
另外,
Llist.Attributes["ExpiryDate"].Value的确切值是多少?还请显示 XML 文档的片段,包括特定日期。 -
这个应用是windows服务应用。 xml 值 - Llist.Attributes["ExpiryDate"].Value = 31/01/2018 但是当我在笔记本电脑上运行此服务时,它可以工作。但是当我在服务器中部署时返回错误。服务器日期时间是美国格式。
-
在这种情况下,代码按预期工作。记录的日期看起来像这样是因为您的服务器正在运行美国日期格式(将月份放在一天之前)。您需要更改其语言环境(不使用美国日期格式)或改用
labelinfor.ExpiryDate.ToString("dateformatyouwanthere")。