C# 如何从时间戳中获取日期

4
如果我有一个形如:yyyy-mm-dd hh:mm:ss:mmm的时间戳,如何从中提取日期?例如,如果时间戳为:"2010-05-18 08:36:52:236",最好的方法是什么?只需获取2010-05-18即可。我的目标是分离时间戳的日期部分,定义自定义时间以创建新的时间戳。是否有更有效的方法来定义时间戳的时间,而不是先取出日期,然后再添加新的时间?

你需要一个日期的字符串表示,只是去除时间部分吗? - Claudio Redi
7个回答

9

将"2010-05-18 08:36:52:236"转换成日期格式,然后输出年月日部分(yyyy-MM-dd)。


你有没有看到我问题的第二部分?如果有更好的方法,请告诉我,我真的很想知道。否则,你在这里写的似乎是合法的,谢谢。 - sooprise
你所说的“更有效率”是什么意思?如果你想让它更快,你可以用分析器比较不同的方法。我认为Andomar建议的方法会更快。(子字符串) - Run CMD
在我的机器上会出现“字符串无法被识别为有效的 DateTime。”异常。 - Andomar
是的,你应该在某处使用CultureInfo.InvariantCulture。 - Run CMD

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

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

1

获取 DateTime 的 .Date 成员

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

0

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

试试这个:

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

所以你将它转换为整数,然后再转回数据,时间部分就消失了。

当然,从原始值中减去此结果将只给出时间部分。


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.

DateTime 是不可变的。您无法修改日期-您正在创建一个新日期,但您将其丢弃而不是存储在变量中。 - Joel Mueller

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接