54

我想使用 C# 在我的 ASP.NET Web 应用程序中检索昨天的日期。我曾尝试寻找解决方案,但没有取得太大成功。我使用的代码只输出今天的日期:

string yr = DateTime.Today.Year.ToString();
string mn = DateTime.Today.Month.ToString();
string dt = DateTime.Today.Day.ToString();
date = string.Format("{0}-{1}-{2}", yr, mn, dt);

我怎样才能得到昨天的日期?

4

9 回答 9

147

使用DateTime.AddDays()方法,其值为-1

var yesterday = DateTime.Today.AddDays(-1);

那会给你:{6/28/2012 12:00:00 AM}

你也可以使用

DateTime.Now.AddDays(-1)

这将为您提供当前时间的上一个日期,例如 {6/28/2012 10:30:32 AM}

于 2012-06-29T05:26:34.443 回答
15

您发布的代码是错误的。

您不应多次调用DateTime.Today. 如果您碰巧在日期更改时运行该代码,您可能会得到完全错误的结果。例如,如果您在 2011 年 12 月 31 日运行它,您可能会得到“2011-1-1”。

使用单个调用,DateTime.Today然后使用ToString适当的格式字符串来根据需要格式化日期。

string result = DateTime.Today.AddDays(-1).ToString("yyyy-MM-dd");
于 2012-06-29T05:28:25.170 回答
5

您将通过以下代码片段获得昨天的日期。

DateTime dtYesterday = DateTime.Now.Date.AddDays(-1);
于 2012-06-29T05:27:44.070 回答
5

您不需要DateTime.Today多次调用,只需一次使用它并以您想要的格式格式化日期对象..就像那样

 string result = DateTime.Now.Date.AddDays(-1).ToString("yyyy-MM-dd");

或者

 string result = DateTime.Today.AddDays(-1).ToString("yyyy-MM-dd");
于 2012-06-29T05:41:02.553 回答
4
var yesterday = DateTime.Now.AddDays(-1);
于 2012-06-29T05:26:28.230 回答
4

像这样的东西应该工作

var yesterday = DateTime.Now.Date.AddDays(-1);

DateTime.Now为您提供当前日期和时间。

如果您希望删除 time 元素,则将其添加.Date到仅日期即 time is 00:00:00

终于.AddDays(-1)去掉1天给你昨天。

于 2012-06-29T05:27:01.963 回答
2
string result = DateTime.Now.Date.AddDays(-1).ToString("yyyy-MM-dd");
于 2012-06-29T05:29:46.400 回答
1
DateTime dateTime = DateTime.Now ; 
string today = dateTime.DayOfWeek.ToString();
string yesterday = dateTime.AddDays(-1).DayOfWeek.ToString(); //Fetch day i.e. Mon, Tues
string result = dateTime.AddDays(-1).ToString("yyyy-MM-dd");

上面的代码片段将起作用。还建议制作 DateTime.Now 的单个实例;

于 2019-03-05T09:11:38.680 回答
0

DateTime.Today正如它所暗示的那样,是今天的日期,您需要在前一天获取日期,因此您可以使用减去一天AddDays(-1)

DateTime 中有足够的选项可以ToShortDateString根据您的文化获得格式,您无需单独连接它们。

您也可以在实例.ToString()版本中拥有理想的格式DateTime

于 2012-06-29T05:30:30.353 回答