如果时间是小数点,我该如何转换为DateTime?
我有一个来自Sage 100 ERP的具体数据表,它使用两个单独的列来存储更新的日期和时间(DateUpdated和TimeUpdated)。我需要将这两个字段中的数据转换为DateTime对象进行比较。日期看起来像“mm/dd/yyyy 12:00 AM”,时间是像14.29297那样的小数。到目前为止,我已经能够将时间转换到分钟如下:如果时间是小数点,我该如何转换为DateTime?
private DateTime GetDateTime(string date, decimal time)
{
int hour = int.Parse(Math.Floor(time).ToString());
decimal minTemp = decimal.Parse((60 * (time - hour)).ToString());
int min = int.Parse(Math.Round(minTemp).ToString());
int sec = int.Parse(Math.Round(60 * (minTemp - min)).ToString());
string datetime = date + " " + hour.ToString() + ":" + min.ToString();
return DateTime.Parse(datetime);
}
我从日期字符串中删除上午12:00之前,我将它传递给这个方法。这很有效,但我放松了非常重要的秒钟。
如何将时间转换为小时,分钟和秒?
它看起来像你能避免所有这些额外的处理,只是这样做:
DateTime GetDateTime(string date, decimal time)
{
return DateTime.Parse(datetime).AddHours((double)time);
}
感谢科里,这是我最终根据马特的回答做的。 –
如果它不是typo
- 您错过了将seconds
值附加到datetime
字符串。
替换此:
string datetime = date + " " + hour.ToString() + ":" + min.ToString();
有了这个:
string datetime = date + " " + hour.ToString() + ":" + min.ToString()+ ":" + sec.ToString();
我不相信秒计算是正确的。它始终是-1。 –
@ user2842689:您能否给我们提供样本小数时间值? –
时间就像14.29297 –
假设你的计算是正确的,你尝试第二部件附加到日期时间变量,如下所示:
string datetime = date +“”+ hour.ToString()+“:”+ min.ToString() +“:”+ sec.ToString()
对于秒尝试是这样的:
int secTemp = int.Parse((Math.Round(60 * (minTemp - min))).ToString());
int sec = (secTemp<0?60 + secTemp:secTemp);
string datetime = date + " " + hour.ToString() + ":" + min.ToString()+ ":" + sec.ToString();
希望它可以帮助
只是分析你拥有的一切:
private DateTime GetDateTime(string date, decimal time)
{
DateTime dt = DateTime.ParseExact(date, "MM/dd/yyyy hh:mm tt",
CultureInfo.InvariantCulutre);
double hours = Convert.ToDouble(time);
return dt.AddHours(hours);
}
当然,这将是一个容易得多如果你有正确的数据类型开始。无论如何,我有一种感觉,你有一个DateTime
和一个double
(也许当你从数据库读取数据时),并且你不正确地将它们转换为string
和decimal
。
另外,我得到一个与ParseExact异常,所以我只是在做DateTime.Parse(日期)。它给了我正确的DateTime值。 –
如果您收到异常,那么您的数据可能与提供的格式不匹配。现在你可能隐藏了这个问题。小心。 –
隐蔽小数到小时和分钟为单数据库字段
double convertData = 1.75
TimeSpan timespan = TimeSpan.FromHours(convertData);
string outputH = timespan.ToString("hh");
string outputM = timespan.ToString("mm");
输出将是1小时/ 45分
可能要参考以下帖子: http://*.com/questions/1933320/convert-a-date-to-string-in-javascript – Sparebrain
你也可以提供一个时间样本吗? – hanskishore
小数值代表什么? –