C#从时间戳获取日期

时间:2010-05-18 13:37:41

标签: c# sql timestamp

如果我在表单中有时间戳:yyyy-mm-dd hh:mm:ss:mmm

如何从时间戳中提取日期?

例如,如果时间戳显示为:“2010-05-18 08:36:52:236”从中获取2010-05-18的最佳方法是什么。

我要做的是隔离时间戳的日期部分,定义创建新时间戳的自定义时间。是否有更有效的方法来定义时间戳的时间而不先取出日期,然后再添加一个新时间?

7 个答案:

答案 0 :(得分:9)

DateTime.Parse(“2010-05-18 08:36:52:236”)。ToString(“yyyy-MM-dd”);

答案 1 :(得分:7)

您应该使用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);

答案 2 :(得分:2)

您可以使用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");

答案 3 :(得分:2)

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.
}

答案 4 :(得分:1)

获取DateTime上的.Date成员

DateTime date = DateTime.Now;
DateTime midnightDate = date.Date;

答案 5 :(得分:0)

像这样使用它:

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.

答案 6 :(得分:0)

最好(也是最快)的方法是将日期转换为整数,因为时间部分存储在小数部分。

试试这个:

select convert(datetime,convert(int, @yourdate))

所以你把它转换成一个整数,然后再回到数据,瞧,时间部分消失了。

当然,从原始值中减去这个结果只会给你时间部分。