如果我有一个形如:yyyy-mm-dd hh:mm:ss:mmm的时间戳,如何从中提取日期?例如,如果时间戳为:"2010-05-18 08:36:52:236",最好的方法是什么?只需获取2010-05-18即可。我的目标是分离时间戳的日期部分,定义自定义时间以创建新的时间戳。是否有更有效的方法来定义时间戳的时间,而不是先取出日期,然后再添加新的时间?
将"2010-05-18 08:36:52:236"转换成日期格式,然后输出年月日部分(yyyy-MM-dd)。
你应该使用 DateTime
类型:
DateTime original = DateTime.Parse(str);
DateTime modified = original.Date + new TimeSpan(13, 15, 00);
string str = modified.ToString("yyyy-MM-dd HH:mm:ss:fff");
ParseExact
而不是Parse
:DateTime original = DateTime.ParseExact(str, "yyyy-MM-dd HH:mm:ss:fff", CultureInfo.InvariantCulture);
substring
函数:"2010-05-18 08:36:52:236".Substring(0, 10);
或者使用 ParseExact
:
DateTime.ParseExact("2010-05-18 08:36:52:236",
"yyyy-MM-dd HH:mm:ss:fff",
CultureInfo.InvariantCulture)
.ToString("yyyy-MM-dd");
DateTime date;
if (DateTime.TryParse(dateString, out date))
{
date = date.Date; // Get's the date-only component.
// Do something cool.
}
else
{
// Flip out because you didn't get a real date.
}
获取 DateTime 的 .Date 成员
DateTime date = DateTime.Now;
DateTime midnightDate = date.Date;
最好(也是最快)的方法是将日期转换为整数,因为时间部分存储在小数部分中。
试试这个:
select convert(datetime,convert(int, @yourdate))
所以你将它转换为整数,然后再转回数据,时间部分就消失了。
当然,从原始值中减去此结果将只给出时间部分。
使用方法如下:
var x = DateTime.Now.Date; //will give you midnight today
x.AddDays(1).AddTicks(-1); //use these method calls to modify the date to whats needed.