11

我在这里搜索有关将“16:20”之类的字符串转换为 DateTime 类型而不丢失格式的信息,我说我不想添加 dd/MM/yyy 或秒或 AM/PM,因为 db 只接受这种格式。

我尝试过文化

提前致谢

4

7 回答 7

23

只需为您的 dateTime 提供日期格式。

string DateFormat = "yyyy MM d "这将为您提供年份月份和日期。继续后; string DateFormat = "yyyy MM d HH:mm:ss " 在这里,大写 H将为您提供24 hours time format小写"h" will give you the 12 hours time格式...

当您将 Dateformat 作为字符串提供时,您可以对日期和时间做任何您想做的事情。

string DateFormat = "yyyyMMdHHmmss";
string date = DateTime.Now.ToStrign(DateFormat);

或者

Console.writeline(DateTime.Now.ToStrign(DateFormat));

输出:

20120823132544
于 2012-08-23T10:40:42.020 回答
15

所有 DateTime 对象都必须有日期和时间。

如果您只需要时间,请使用 TimeSpan:

TimeSpan span = TimeSpan.Parse("16:20");

如果您需要 DateTime,请将该时间添加到最小值:

TimeSpan span = TimeSpan.Parse("16.20");
DateTime dt = DateTime.MinValue.Add(span);
// will get you 1/1/1900 4:20 PM which can be formatted with .ToString("HH:mm") for 24 hour formatting
于 2008-12-11T21:45:23.920 回答
3

DateTime.Now.ToString("hh:mm") - 如果是 C#。

哦。只阅读标题。

DateTime dt = new DateTime(2008, 12, 11, Convert.ToInt32("16"), Convert.ToInt32("32"), 0);
于 2008-12-11T21:23:47.023 回答
1

“丢失格式”是什么意思。

如果将其转换为 DateTime 类型,则 DateTime 对象将具有 dd/mm/yy 和其他属性。根据您打算如何使用该对象,您可以“恢复”您的原始设置,方法是像这样格式化字符串输出:DT.ToString("HH:mm");

于 2008-12-11T21:26:57.140 回答
1

由于您没有规定您使用的是哪个 DBMS,因此很难知道哪个答案会对您有所帮助。如果您使用 IBM Informix Dynamic Server,您只需使用数据类型“DATETIME HOUR TO MINUTE”,它将以 24 小时制记录值。

于 2008-12-11T21:27:21.383 回答
1
DateTime.Parse("16:20")
于 2008-12-11T21:29:33.000 回答
0

我想解决你问题的这一部分:

不丢失格式

数据库通常会以标准的通用格式存储所有日期时间值,这种格式甚至不是人类可读的。如果您使用日期时间列,则原始格式将被破坏。

但是,当您检索该值时,您会将其转换回您想要的任何格式。如果你愿意HH:mm,你可以得到它。

于 2008-12-11T21:24:11.890 回答