没有时间的日期时间没有 string.format
A Datetime without time without string.format
我有一个 DataTable
来自我正在写入 excel 文件的存储过程。有一个数据类型为 DateTime
的列,查看其中的值,它们只是带有时间戳的通用日期。
我试过使用 DateTime.Date
属性,但它仍然给我一个时间戳。此外,我尝试使用 year,month,day
构造函数创建一个新的 DateTime
对象,但它仍然添加了一个时间戳:
DateTime newDate = DateTime(oldDate.Year, oldDate.Month, oldDate.Day);
我试图将列数据类型保持为 DateTime
但删除了时间戳,因此这排除了 ToString("")
格式。还有别的办法吗?
如果您指的是 timestamp 的时间部分,则 DateTime
实例 always 具有日期和时间部分。 DateTime.Date
property 只是将时间值设置为午夜。
如果您只需要它的 Date
部分,您可以获得它的字符串表示形式。您可以使用 DateTime.ToString()
方法获得 standard date and time format or custom date and time format。
通常,您可以使用 CurrentCulture
的 ShortDatePattern
to get only string representation of Date
part which uses standard "d"
format。
DateTime.Now.ToString("d");
顺便提一下,在 dotnet/corefx on GitHub 页面中有针对 .NET Framework 的 System.Date
和 System.Time
类型的提案。
A DateTime
总是包含日期和时间部分。如果你使用 Date
属性 它 returns 一个新的 DateTime
时间是 0:00:00
所以在同一天的午夜。您需要不带时间的日期时间的字符串表示形式。
您可以使用 DateTime.ToString
:
string result = oldDate.ToString("d"); // uses current culture's date format
或
string result = oldDate.ToShortDateString(); // same as above
或
string result = oldDate.ToString("MM-dd-yyyy"); // custom format
编辑:"so this rules out ToString("")
formatting. Is there another way?"
不是,因为上面提到的原因。
将数据与其显示方式分开很重要。如果你需要在没有时间的情况下使用上面的代码显示它,你可以存储原始的 DateTime
变量以供将来处理,select 从数据库中再次使用它或使用 DateTime.Parse
/DateTime.ParseExcact
从字符串中获取 DateTime
。
你应该使用DateTime.Now.ToShortDateString();
'problem'是.NET中没有Date
结构,只有DateTime
结构。这将始终包含日期和时间。您只能将其格式化为日期。
或者,您当然可以编写自己的 struct
仅包含日期部分,或者放弃并使用 string.Format
将其格式化为日期(可能使用短日期字符串 d
).
我有一个 DataTable
来自我正在写入 excel 文件的存储过程。有一个数据类型为 DateTime
的列,查看其中的值,它们只是带有时间戳的通用日期。
我试过使用 DateTime.Date
属性,但它仍然给我一个时间戳。此外,我尝试使用 year,month,day
构造函数创建一个新的 DateTime
对象,但它仍然添加了一个时间戳:
DateTime newDate = DateTime(oldDate.Year, oldDate.Month, oldDate.Day);
我试图将列数据类型保持为 DateTime
但删除了时间戳,因此这排除了 ToString("")
格式。还有别的办法吗?
如果您指的是 timestamp 的时间部分,则 DateTime
实例 always 具有日期和时间部分。 DateTime.Date
property 只是将时间值设置为午夜。
如果您只需要它的 Date
部分,您可以获得它的字符串表示形式。您可以使用 DateTime.ToString()
方法获得 standard date and time format or custom date and time format。
通常,您可以使用 CurrentCulture
的 ShortDatePattern
to get only string representation of Date
part which uses standard "d"
format。
DateTime.Now.ToString("d");
顺便提一下,在 dotnet/corefx on GitHub 页面中有针对 .NET Framework 的 System.Date
和 System.Time
类型的提案。
A DateTime
总是包含日期和时间部分。如果你使用 Date
属性 它 returns 一个新的 DateTime
时间是 0:00:00
所以在同一天的午夜。您需要不带时间的日期时间的字符串表示形式。
您可以使用 DateTime.ToString
:
string result = oldDate.ToString("d"); // uses current culture's date format
或
string result = oldDate.ToShortDateString(); // same as above
或
string result = oldDate.ToString("MM-dd-yyyy"); // custom format
编辑:"so this rules out ToString("")
formatting. Is there another way?"
不是,因为上面提到的原因。
将数据与其显示方式分开很重要。如果你需要在没有时间的情况下使用上面的代码显示它,你可以存储原始的 DateTime
变量以供将来处理,select 从数据库中再次使用它或使用 DateTime.Parse
/DateTime.ParseExcact
从字符串中获取 DateTime
。
你应该使用DateTime.Now.ToShortDateString();
'problem'是.NET中没有Date
结构,只有DateTime
结构。这将始终包含日期和时间。您只能将其格式化为日期。
或者,您当然可以编写自己的 struct
仅包含日期部分,或者放弃并使用 string.Format
将其格式化为日期(可能使用短日期字符串 d
).