从输入的日期算起昨天的日期

时间:2014-10-23 16:54:32

标签: c# date console-application

我有控制台应用程序接受日期作为参数。但是,日期将以此格式作为字符串传递:

string dt = DateTime.Now.ToString("yyyyMMdd");

输入日期后,我需要以编程方式从输入的日期获取day - 1。由于这是一个字符串,我无法进行任何计算。

例如,用户输入:

  

20141023

我需要从获得日期的一天中减去一天:

  

20141022

我做了一个快速修复来解决我的迫切需要,然而,这不是正确的方法,它有一个错误:

int yt = Int32.Parse(dt) - 1;

然后我转过身来转换它yt.ToString()

如果上述解决方案属于当月1st,则无法使用。

我是否有办法以(yyyyMMdd)格式以编程方式获取昨天的日期而不更改格式,可能不使用TimeSpan

3 个答案:

答案 0 :(得分:3)

为什么不将输入解析为DateTime对象?然后,您可以使用DateTime.AddDays(-1)

例如:

var inputDate = DateTime.ParseExact("20141022", "yyyyMMdd", CultureInfo.InvariantCulture); // change "20141022" into the inputted value
var yesterday = inputDate.AddDays(-1);

var yesterdayString = yesterday.ToString("yyyyMMdd"); // this will be yesterdays date, in the string format

答案 1 :(得分:1)

这对你有用吗?

string newDateTimeStr = (DateTime.Today.AddDays(-1)).ToString("yyyyMMdd");

编辑: 对于用户输入的日期:

string txtInputDate = Console.ReadLine();
DateTime dateTime = new DateTime(txtInputDate).ToLocalTime();
string newDateTimeStr = (dateTime.AddDays(-1)).ToString("yyyyMMdd");

答案 2 :(得分:1)

试试这个......

  DateTime data = DateTime.ParseExact("20141023", "yyyyMMdd", CultureInfo.InvariantCulture);
  Console.WriteLine("{0} - {1}", data, data.AddDays(-1).ToString("yyyyMMdd"));