我有控制台应用程序接受日期作为参数。但是,日期将以此格式作为字符串传递:
string dt = DateTime.Now.ToString("yyyyMMdd");
输入日期后,我需要以编程方式从输入的日期获取day - 1
。由于这是一个字符串,我无法进行任何计算。
例如,用户输入:
20141023
我需要从获得日期的一天中减去一天:
20141022
我做了一个快速修复来解决我的迫切需要,然而,这不是正确的方法,它有一个错误:
int yt = Int32.Parse(dt) - 1;
然后我转过身来转换它yt.ToString()
如果上述解决方案属于当月1st
,则无法使用。
我是否有办法以(yyyyMMdd)
格式以编程方式获取昨天的日期而不更改格式,可能不使用TimeSpan
?
答案 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"));