C# Datetime来自分别添加时间和日期的字符串
我在两个字符串字段中找到了日期时间的一部分,我使用下面的方法将日期转换为datetime,这很有效,但是如何在24小时格式中添加时间元素呢。 你会看到下面的两个意思是它是在2018年8月12日9时08分订购的 使用以下方法,我将以24小时格式附加0808的时间元素,以便获得有效的日期-时间结果C# Datetime来自分别添加时间和日期的字符串,c#,datetime,C#,Datetime,我在两个字符串字段中找到了日期时间的一部分,我使用下面的方法将日期转换为datetime,这很有效,但是如何在24小时格式中添加时间元素呢。 你会看到下面的两个意思是它是在2018年8月12日9时08分订购的 使用以下方法,我将以24小时格式附加0808的时间元素,以便获得有效的日期-时间结果 DateTime dt = DateTime.ParseExact( TrasnactionDate, "ddMMyy", System.Globalization.CultureIn
DateTime dt = DateTime.ParseExact(
TrasnactionDate,
"ddMMyy",
System.Globalization.CultureInfo.InvariantCulture);
string outp = dt.ToString("yyyy/MM/dd");
时间元素存储在名为字符串TransactionTime的变量中
因此,最终结果将是我所要求的有效日期和时间
"081218","0908",
"071218","0919",
编辑2
好的,我试着按照下面的建议添加它们,但我有一个空日期
DateTime dt = DateTime.ParseExact(TrasnactionDate + TransactionTime, "ddMMyy", System.Globalization.CultureInfo.InvariantCulture);
string outp = dt.ToString("yyyy/MM/dd HH:mm");
结果是0001/01/01 00:00,而应该是2018/08/12 09:08
编辑3
我现在有以下资料:
DateTime totalDateTime = DateTime.ParseExact(TrasnactionDate, "ddMMyy", CultureInfo.InvariantCulture) +
DateTime.ParseExact(TransactionTime, "HHmm", CultureInfo.InvariantCulture).TimeOfDay;
string outp = totalDateTime.ToString("yyyyMMdd HH:mm:ss");
但我需要它的格式
yyyyMMdd HH:mm
但它是说,当我把它填入日期时间字段时,它是无效的。请有人告诉我这是一个无效值:
20181211 09:08:00
编辑4
在sql中显示该字段是有效的日期时间字段
为什么不在解析之前进行concat
var dateTimeStr = TransactionDate + TransactionTime;
var result = DateTime.ParseExact(dateTimeStr, "ddMMyyHHmm", CultureInfo.InvariantCulture);
另一种方式:
var result = DateTime.ParseExact(TransactionDate, "ddMMyy", CultureInfo.InvariantCulture)
+ TimeSpan.ParseExact(TransactionTime, "hhmm", CultureInfo.InvariantCulture);
之后,您可以输出您喜欢的任何字符串格式:
result.ToString("yyyyMMdd HH:mm", CultureInfo.InvariantCulture);
// 20181211 09:08
result.ToString("yyyyMMdd HH:mm:ss", CultureInfo.InvariantCulture);
// 20181211 09:08:00
result.ToString("yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture);
// 2018-12-11 09:08:00
尝试将日期部分解析为DateTime
,但将时间部分解析为TimeSpan
;然后可以添加两个部分:
string TrasnactionDate = "081218";
string TrasnactionTime = "0908";
DateTime dt =
DateTime.ParseExact(TrasnactionDate, "ddMMyy", CultureInfo.InvariantCulture) +
TimeSpan.ParseExact(TrasnactionTime, "hhmm", CultureInfo.InvariantCulture);
编辑:另一种可能性是
// HH - we use 24 hours time representation (see juharr's comment)
DateTime dt =
DateTime.ParseExact(TrasnactionDate, "ddMMyy", CultureInfo.InvariantCulture) +
DateTime.ParseExact(TrasnactionTime, "HHmm", CultureInfo.InvariantCulture).TimeOfDay;
演示:
var tests = new string[][] {
new string[] { "081218", "0908"},
new string[] { "071218", "0919"},
};
DateTime[] result = tests
.Select(line => new {
TrasnactionDate = line[0],
TrasnactionTime = line[1],
})
.Select(item =>
DateTime.ParseExact(item.TrasnactionDate,
"ddMMyy",
CultureInfo.InvariantCulture) +
DateTime.ParseExact(item.TrasnactionTime,
"HHmm",
CultureInfo.InvariantCulture).TimeOfDay)
.ToArray();
string report = string.Join(Environment.NewLine, result
.Select(date => $"{date:yyyy/MM/dd HH:mm}"));
2018/12/08 09:08
2018/12/07 09:19
结果:
var tests = new string[][] {
new string[] { "081218", "0908"},
new string[] { "071218", "0919"},
};
DateTime[] result = tests
.Select(line => new {
TrasnactionDate = line[0],
TrasnactionTime = line[1],
})
.Select(item =>
DateTime.ParseExact(item.TrasnactionDate,
"ddMMyy",
CultureInfo.InvariantCulture) +
DateTime.ParseExact(item.TrasnactionTime,
"HHmm",
CultureInfo.InvariantCulture).TimeOfDay)
.ToArray();
string report = string.Join(Environment.NewLine, result
.Select(date => $"{date:yyyy/MM/dd HH:mm}"));
2018/12/08 09:08
2018/12/07 09:19
你已经试过什么了?你在哪里遇到问题?将时间结果添加到日期结果中。@dymanoid如果他知道要尝试什么,他不会问。你能解释一下“它”到底是什么吗,这说明?@marsze在屏幕截图中显示,因为时间部分不包括上午/下午,我猜他们需要使用24小时格式
HH
。@juharr:noH
表示DateTime
,当我将TrasnactionTime
解析为TimeSpan
(1908
而不是0908
将是19
小时和8
分钟)是的,Timespan不知道AM/PM的情况,因此如果OP需要处理这一点,那么他们将不得不连接。@Dave检查格式字符串。这不正确。您必须使用“ddMMyyHHmm”
@marsize我不能让它进入sap,它需要它yyyyddmm@Dave您可以输出您喜欢的任何格式,请参见my edit.var result=DateTime.ParseExact(TrasActionDate,“ddMMyy”,CultureInfo.InvariantCulture)+TimeSpan.ParseExact(TransactionTime,“hhmm”,CultureInfo.InvariantCulture);DateTime _date=Convert.ToDateTime(result.ToString(“yyyyMMdd HH:mm”);@Daveresult
已经是日期时间。无需使用Convert。