C# - 更改日期和时间格式
C# - Changing Date and Time Format
我正在尝试创建本机消息传递应用程序所具有的日期和时间格式,具体取决于已经过去了多少天。
假设我创建了一条消息并于今天 03/01/2015 周六 2:21 下午 发送。格式应该是:
.ToString("h:mm tt"); //2:21 p.m.
这表示消息是今天在 2:21 p.m 发送的,格式直到星期天(明天)才会改变。
此 DateTime 格式将一直保持到明天,即 04/01/2015,12:00 上午,星期日 。现在格式应该是:
.ToString("ddd"); //Sat
现在这表示消息是昨天星期六发送的,当前格式直到星期一才会改变,星期一 05/01/2015,12:00 上午,星期一.
为此,我目前正在使用此功能:
public static string GetVisibleTime(DateTime time)
{
DateTime timeNow = DateTime.Now;
TimeSpan totalSpan = (timeNow - time);
if (totalSpan.TotalHours < 24)
{
return time.ToShortTimeString();
}
if (totalSpan.TotalDays < 7)
{
return time.ToString("ddd");
}
if (totalSpan.TotalDays < 14)
{
return time.ToString("ddd/MMM");
}
if (totalSpan.TotalDays < 365 && time.Year == timeNow.Year)
{
return time.ToString("MM/yy");
}
return time.ToString("dd/MM/yy");
}
我的问题
现在假设我今天在 2:35 p.m 创建并发送了消息。在 03/01/2015 和明天 04/01/2015,我在 12:20 p.m 左右查看格式。格式仍为 2:35 p.m。 (在 h:mm tt)并且不会改变。格式唯一会改变的时间是在它通过 2:35 p.m 之后。 2015 年 4 月 1 日。我希望格式在第二天更改,而不需要等到今天的时间或日期与昨天的时间或日期匹配才能更改。如前所述,我正在尝试让它像本机消息传递应用程序一样工作。
听起来您想更改正在评估的条件。不要检查经过的时间,而是检查相同的日期。
替换:
if (totalSpan.TotalHours < 24)
有了这个:
if (time.Date == timeNow.Date)
这样,短时间字符串只会在日期未更改时出现。一旦过了午夜,就会进入下一个条件。
我正在尝试创建本机消息传递应用程序所具有的日期和时间格式,具体取决于已经过去了多少天。
假设我创建了一条消息并于今天 03/01/2015 周六 2:21 下午 发送。格式应该是:
.ToString("h:mm tt"); //2:21 p.m.
这表示消息是今天在 2:21 p.m 发送的,格式直到星期天(明天)才会改变。
此 DateTime 格式将一直保持到明天,即 04/01/2015,12:00 上午,星期日 。现在格式应该是:
.ToString("ddd"); //Sat
现在这表示消息是昨天星期六发送的,当前格式直到星期一才会改变,星期一 05/01/2015,12:00 上午,星期一.
为此,我目前正在使用此功能:
public static string GetVisibleTime(DateTime time)
{
DateTime timeNow = DateTime.Now;
TimeSpan totalSpan = (timeNow - time);
if (totalSpan.TotalHours < 24)
{
return time.ToShortTimeString();
}
if (totalSpan.TotalDays < 7)
{
return time.ToString("ddd");
}
if (totalSpan.TotalDays < 14)
{
return time.ToString("ddd/MMM");
}
if (totalSpan.TotalDays < 365 && time.Year == timeNow.Year)
{
return time.ToString("MM/yy");
}
return time.ToString("dd/MM/yy");
}
我的问题
现在假设我今天在 2:35 p.m 创建并发送了消息。在 03/01/2015 和明天 04/01/2015,我在 12:20 p.m 左右查看格式。格式仍为 2:35 p.m。 (在 h:mm tt)并且不会改变。格式唯一会改变的时间是在它通过 2:35 p.m 之后。 2015 年 4 月 1 日。我希望格式在第二天更改,而不需要等到今天的时间或日期与昨天的时间或日期匹配才能更改。如前所述,我正在尝试让它像本机消息传递应用程序一样工作。
听起来您想更改正在评估的条件。不要检查经过的时间,而是检查相同的日期。
替换:
if (totalSpan.TotalHours < 24)
有了这个:
if (time.Date == timeNow.Date)
这样,短时间字符串只会在日期未更改时出现。一旦过了午夜,就会进入下一个条件。