【问题标题】:C# Windows Application DateTime does not work when DeployedC# Windows 应用程序日期时间在部署时不起作用
【发布时间】: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")

标签: c# .net c#-4.0


【解决方案1】:

随便用

Tempdate.ToString(format);

const string format = "dd/MM/yyyy";
//31/01/2018
Console.WriteLine( DateTime.ParseExact("31/01/2018",format,CultureInfo.InvariantCulture,DateTimeStyles.None).ToString(format));
Console.ReadLine();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    相关资源
    最近更新 更多