有没有人听说过,或者有权访问某些c#字符串扩展片段或库,将"昨天","今天","明天"等内容转换为DateTimes或"8秒前","从现在开始10分钟"进入TimeSpans?
如果没有,有什么想法可能在C#中看起来像什么?
谢谢
我在某个时候从某个地方得到了这个.
public static string ElapsedTime(DateTime dtEvent)
{
TimeSpan TS = DateTime.Now - dtEvent;
int intYears = DateTime.Now.Year - dtEvent.Year;
int intMonths = DateTime.Now.Month - dtEvent.Month;
int intDays = DateTime.Now.Day - dtEvent.Day;
int intHours = DateTime.Now.Hour - dtEvent.Hour;
int intMinutes = DateTime.Now.Minute - dtEvent.Minute;
int intSeconds = DateTime.Now.Second - dtEvent.Second;
if (intYears > 0) return String.Format("{0} {1} ago", intYears, (intYears == 1) ? "year" : "years");
else if (intMonths > 0) return String.Format("{0} {1} ago", intMonths, (intMonths == 1) ? "month" : "months");
else if (intDays > 0) return String.Format("{0} {1} ago", intDays, (intDays == 1) ? "day" : "days");
else if (intHours > 0) return String.Format("{0} {1} ago", intHours, (intHours == 1) ? "hour" : "hours");
else if (intMinutes > 0) return String.Format("{0} {1} ago", intMinutes, (intMinutes == 1) ? "minute" : "minutes");
else if (intSeconds > 0) return String.Format("{0} {1} ago", intSeconds, (intSeconds == 1) ? "second" : "seconds");
else
{
return String.Format("{0} {1} ago", dtEvent.ToShortDateString(), dtEvent.ToShortTimeString());
}
}
Run Code Online (Sandbox Code Playgroud)
我不知道任何开箱即用的库,但它很容易编写自己的:
public static class DateTimeExtensions
{
public static DateTime Yesterday (this DateTime x)
{
return x.AddDays(-1);
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以做类似的事情:
var yesterday = DateTime.Now.Yesterday();
Run Code Online (Sandbox Code Playgroud)
编辑:似乎您只想将逐字字符串转换为日期时间.我没有看到如何在没有明确地将某些字符串映射到特定条件的情况下执行此操作,例如
public static DateTime GiveMeADateTime(this string stringValue)
{
switch (stringValue)
{
case "today": return DateTime.Now;
case "tomorrow": return DateTime.Now.AddDays(1);
default: return DateTime.Now;
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以使用它:
var todaysDate = "today".GiveMeADateTime();
Run Code Online (Sandbox Code Playgroud)
请注意,这不是非常动态,也不可维护.但我想这应该可以给你一些想法.