- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我们有一个应用程序解析以下格式的日期/时间值:
2009-10-10 09:19:12.124
2009-10-10 12:13:14.852
2009-10-10 13:00:00
2009-10-10 15:23:32.022
一个特定的服务器突然(今天)在 13:00:00 或更晚的任何时间开始解析失败。这个特定的客户端有五台服务器,只有一台有问题。我们有几十个其他客户,总共有数百台服务器没有问题。
System.FormatException: String was not recognized as a valid DateTime.
at System.DateTimeParse.Parse(String s, DateTimeFormatInfo dtfi, DateTimeStyles styles)
at System.DateTime.Parse(String s, IFormatProvider provider)
at System.Convert.ToDateTime(String value, IFormatProvider provider)
at System.String.System.IConvertible.ToDateTime(IFormatProvider provider)
at System.Convert.ToDateTime(Object value)
我使用 DateTime.Parse(s, CultureInfo.CurrentCulture) comappred 到 DateTime.Parse(s, CultureInfo.InvariantCulture) 进行了测试,问题只出现在 CurrentCulture 中。但是,CurrentCulture 就像所有其他服务器一样是“en-US”,我在区域或语言设置中没有发现任何不同之处。
有没有人见过这个?与我可以调查的内容相关的建议?
编辑:感谢您到目前为止的回答。但是,我正在寻找有关要研究的配置的建议,这可能会导致它突然改变行为并在它工作多年并在数百个其他服务器上工作时停止工作。我已经为下一个版本更改了它,但我正在寻找配置更改以在当前安装的过渡期间修复此问题。
最佳答案
如果您确切知道格式,请告诉应用程序它是什么 - 使用 DateTime.ParseExact
而不仅仅是 DateTime.Parse
。 (正如其他人所说,还要指定不变的区域性,以消除任何更多变化。)这给了你更多的控制权:
using System;
using System.Globalization;
class Test
{
static void Main()
{
Parse("2009-10-10 09:19:12.124");
Parse("2009-10-10 12:13:14.852");
Parse("2009-10-10 13:00:00");
Parse("2009-10-10 15:23:32.022");
}
static readonly string ShortFormat = "yyyy-MM-dd HH:mm:ss";
static readonly string LongFormat = "yyyy-MM-dd HH:mm:ss.fff";
static readonly string[] Formats = { ShortFormat, LongFormat };
static void Parse(string text)
{
// Adjust styles as per requirements
DateTime result = DateTime.ParseExact(text, Formats,
CultureInfo.InvariantCulture,
DateTimeStyles.AssumeUniversal);
Console.WriteLine(result);
}
}
关于c# - Convert.ToDateTime 在下午日期/时间值上导致 FormatException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1579814/
我在尝试将 string 转换为 DateTime 时遇到错误,尽管这在以前一直有效。 这是我使用的程序: 像这样将日期时间保存到文本文件中: DateTime.Now.ToUniversalTime
我有这个代码: public JsonResult salvaPaciente(string cns, string sexo, string dataNasc, string nome, strin
考虑以下代码片段: DateTime dt = Convert.ToDateTime("06/16/2014 -0:10"); Console.Write (dt.ToString()); Conso
当我创建新的 DateTime 对象时,它具有来自“date.timezone”设置的时区: print_r(new DateTime()); DateTime Object ( [date]
这让我很难过...我使用的确切示例来自: http://php.net/manual/en/mongodate.todatetime.php 但我得到了: PHP Fatal error: Call
为什么 Convert.ToDateTime 对于以下值表现异常? 以下工作正常: var value = "08/01/2011"; var dateTime = Convert.ToDateTim
我从数据库中得到了整个字符串: CCC_0293170118-10-2013-20-27-54.541 我有子字符串,所以我得到 18-10-2013-20-27-54,但它抛出错误 我想将它转换为
我有以下代码,它有效。 string testDateStr = "2009.7.28 05:23:15"; DateTime testDateObj = Convert.ToDateTime(tes
我可以覆盖 Convert.ToDateTime() 吗?我不想检查字符串是否为 nul 100 次或更多次,如果不是则将其转换为 DateTime。我可以覆盖此函数以检查是否为 null 然后将返回
我有大量文本文件需要使用正则表达式进行解析。我收集的一些数据是各种格式的日期,例如 12/1/15、2015 年 12 月 1 日、12-1-15 等。它们有时会列出年份,有时不会吨。我的问题发生在我
我想生成类似这种SQL语句的LINQ语句 SELECT * FROM dbo.tbl_Advertisement WHERE FileName LIKE '%latest%' AN
这是 this question 的跟进我试图在我的回答中解释但未能解释。 DateTime 实现 IConvertible .你可以证明这一点,因为 IConvertible dt = new Da
我正在尝试同时使用 System.DateTime.Now.ToString() 和 Convert.ToDateTime,但遇到了一些奇怪的行为。我已将问题缩小到 Convert.ToDateTim
昨晚我正在为我正在处理的系统做一些类型转换例程。其中一项转换涉及将字符串值转换为其 DateTime 等价物。 在执行此操作时,我注意到 Convert.ToDateTime() 方法有一个接受 bo
我有一个特定的日期string:"13/02/07,16:05:13+00" 我试图将它在 C# 中转换为 datetime (Convert.toDateTime),但我一直收到错误。 我也尝试过使
我有以下非常不可靠的陈述: string LastsuccessfuldownloadDateTime = "04.07.2009 19:21:36" DateTime myDate = Co
我正在尝试将 xml 属性的值 (yyyy-MM-ddTHH:mm:sszzzzzz) 转换为 yyyyMMdd。 我正在尝试使用: XmlConvert.ToDateTime(xmlattribut
我发现 UTCDateTime 对象有些奇怪: $dt = new UTCDateTime(time()); var_dump($dt); 输出: object(MongoDB\BSON\UTCDat
我们有一个应用程序解析以下格式的日期/时间值: 2009-10-10 09:19:12.124 2009-10-10 12:13:14.852 2009-10-10 13:00:00 2009-10-
为什么以下操作失败并显示“从‘Int64’到‘DateTime’的无效转换。”异常? long oldDate=new DateTime(2015, 1, 1).Ticks; DateTime new
我是一名优秀的程序员,十分优秀!