2015-10-01 64 views
-2

我有以下简单的例子:C#是有可能减去一天的日期时间格式

string dt = DateTime.Now.ToString("yyyy-MM-dd hh.mm.ss"); 

我不能改变DateTime.Now,但我可以改变日期时间格式yyyy-MM-dd hh.mm.ss。在此示例之后,结果必须是今天的日期,但除了日期(年,月,小时,分钟和秒)之外,我需要使用相同的参数获取昨天的日期。例如。 2015-08-23 12.09.59必须是2015-08-22 12.09.59。那么是否可以在日期时间格式中使用一些“ - ”运算符或其他内容来实现结果?

+1

'我可以”不要改变DateTime.Now,但是为什么? – Sachin

+0

因为我在图书馆工作,我可以设置它只有日期时间模式 – Mia

+0

因此,只需在日期时间分析中包装Arghya C的答案? (绝对不是首选) – Sayse

回答

2

例如, 2015-08-23 12.09.59必须是2015-08-22 12.09.59。那么 可能使用一些“ - ”运算符或其他内部的 datetime格式来实现结果吗?

不,这在DateTime格式中是不可能的。你不能改变任何事情。因为它仅用于以字符串格式显示日期的定义格式。任何加法或减法只能在按照“Arghya C”的建议将其转换为字符串格式之前完成。

您能否解释一下您的限制,以便我们解决您的问题。

+0

我正在使用库,我可以设置为只有日期时间模式,所以感谢您的回复 – Mia

7

如果你想昨天的日期,你可以做到这一点

string dt = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd hh.mm.ss"); 

DateTime.AddDays()让你增加的天数,积极为将来的日期,负过去的日期。

+0

我只能更改日期时间格式 – Mia

+4

为什么?你为什么不能输入? –

+0

因为我正在与图书馆合作,所以我可以设置为只有日期时间模式 – Mia

1

如果你只能影响日期时间模式,除使用roundtrip format并解析返回的字符串返回的日期时间,添加计算和格式化成所需的格式:

var dateTimeString = badLibrary.GetDateTime("o"); 
var dateTime = DateTime.Parse(dateTimeString, null, DateTimeStyles.RoundtripKind); 
var newDateTime = dateTime.AddDays(-1); 

return newDateTime.ToString("yyyy-MM-dd hh.mm.ss"); 
+0

如果库返回基于指定格式的日期的字符串表示形式,则应该适用于op。如果这个方法是无效的,那就没有办法了! –