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

时间:2018-05-03 05:35:28

标签: c# datetime unity3d datetime-format

我一直在尝试使用DateTime.ParseExact来读取从数据库收到的DateTime信息。收到的数据是字符串格式,看起来像这样

"00:10:47:18"

我正在实施的代码如下:

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

其中D的类型为DateTime。但是,我得到一个格式异常,说无效的字符串格式。我也试过这个

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

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

2 个答案:

答案 0 :(得分:3)

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

body {
  background: whitesmoke;
}

#notice_view {
  height: 185px;
  width: 385px;
  border: 2px solid grey;
  display: inline-block;
  background-color: white;
}

.notices {
  margin-top: 10px;
  margin-left: 20px;
  color: black;
  width: 240px;
  float: left;
  cursor: pointer;
  border: solid 1px red;
}

.dates {
  margin-top: 10px;
  margin-left: 10px;
  color: black;
  width: 95px;
  float: left;
  cursor: pointer;
  z-index: 50;
}

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

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
  <div class="center">
    <div class='container'>
      <div id="notice_view">
        <div class="b">더보기</div>
        <div id="notice1" class="notices">notice1</div>
        <div id="date1" class="dates">date1</div>
        <div id="notice2" class="notices">notice2</div>
        <div id="date2" class="dates">date2</div>
        <div id="notice3" class="notices">notice3</div>
        <div id="date3" class="dates">date3</div>
        <div id="notice4" class="notices">notice4</div>
        <div id="date4" class="dates">date4</div>
      </div>
   </div>
 </div>
</body>

用法:

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

答案 1 :(得分:0)

这是我得到的: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);
来自https://msdn.microsoft.com/en-us/library/se73z7b9(v=vs.110).aspx

的Timespan.Parse的

编辑

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"));