DateTime.ParseExact 抛出字符串格式错误 Unity3D



>我一直在尝试使用DateTime.ParseExact 来读取我从数据库中收到的DateTime信息。接收的数据为字符串格式,如下所示

"00:10:47:18"

我正在实现的代码如下:

D = DateTime.ParseExact("00:10:47:18", "dd:HH:mm:ss", null);

其中 D 的类型为日期时间。但是,我收到一个格式异常,指出字符串格式无效。我也试过这样做

D = DateTime.ParseExact("00:10:47:18", "'dd':'HH':'mm':'ss'", null);

但即使使用上面的代码也会给我格式异常。任何帮助为我指出正确的方向将不胜感激。注意:我在 Unity3D 中执行此操作并在 C# 上编码。

您的数据看起来像持续时间,而不是日期/时间。您必须为此目的使用TimeSpan。

string input = "00:10:47:18";
TimeSpan output = TimeSpan.ParseExact(input, @"dd:hh:mm:ss", CultureInfo.InvariantCulture);

Unity 不支持 TimeSpan.ParseExact 方法(它是在 .NET 4 中引入的(,所以我想你能做的唯一方法是手动解析:

public static TimeSpan ParseDuration(string input)
{
string[] inputParts = input.Split(':');
string ddString = inputParts[0];
string hhString = inputParts[1];
string mmString = inputParts[2];
string ssString = inputParts[3];
int dd = int.Parse(ddString, CultureInfo.InvariantCulture);
int hh = int.Parse(hhString, CultureInfo.InvariantCulture);
int mm = int.Parse(mmString, CultureInfo.InvariantCulture);
int ss = int.Parse(ssString, CultureInfo.InvariantCulture);
return new TimeSpan(dd, hh, mm, ss);
}

用法:

string input = "00:10:47:18";
TimeSpan output = ParseDuration(input);

这是我从以下位置得到的:https://msdn.microsoft.com/en-us/library/dd992370(v=vs.110(.aspx

intervalString = "17:14:48.153";
format = "G";
culture = CultureInfo.CurrentCulture;
interval = TimeSpan.ParseExact(intervalString, format, culture);
//Console.WriteLine("'{0}' --> {1}", intervalString, interval);

EDITfor Timespan.Parse from :https://msdn.microsoft.com/en-us/library/se73z7b9(v=vs.110(.aspx

string value = "6:12:14:45";
string cultureName = "en-US";
Thread.CurrentThread.CurrentCulture = new CultureInfo(cultureName);
TimeSpan ts = TimeSpan.Parse(value);
//Console.WriteLine("{0} --> {1}", value, ts.ToString("c"));

最新更新