字符串的日期时间分别添加时间和日期

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串的日期时间分别添加时间和日期相关的知识,希望对你有一定的参考价值。

我在两个字符串字段中获取日期时间的一部分我使用以下内容将日期转换为有效的日期时间但是如何以24小时格式添加时间元素。你会看到下面这两个意味着它是在8月12日在0908订购的

使用以下内容如何以24小时格式附加0808的时间元素,以便获得有效的日期时间结果。

DateTime dt = DateTime.ParseExact(
   TrasnactionDate, 
  "ddMMyy", 
   System.Globalization.CultureInfo.InvariantCulture);

string outp = dt.ToString("yyyy/MM/dd");

time元素存储在一个名为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中的有效日期时间字段

enter image description here

答案

为什么不在解析前进行连接?

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

以上是关于字符串的日期时间分别添加时间和日期的主要内容,如果未能解决你的问题,请参考以下文章

C# Access OleDB 分别添加时间和日期

Android studio 动态片段根据日期

常用python日期日志获取内容循环的代码片段

日期选择器对话框在片段中不起作用[关闭]

日期和时间

如何从片段中调用 getSupportFragmentManager()?