C# WPF 日期时间的友好显示
我们在开发软件时数据通常是通过DataBinding 到控件上显示,有的时候就会遇到要显示日期时间的情况。真接显示不好看,所有就有了这篇文章。
思路是利用 Converter(转换器)
1.实体类的代码如下
2.Converter
3.Xmal 或者 Style 里使用
先在资源里定义转换器 local:DateTimeFriendConverter x:Key="DateTimeFriendConverter"/>
<TextBlock Style="{StaticResource DetailValueStyle}" Text="{Binding sendInTime,Converter={StaticResource DateTimeFriendConverter}}"/>
<TextBlock Style="{StaticResource DetailValueStyle}" Text="{Binding sendOutTime,Converter={StaticResource DateTimeFriendConverter}}"/>
4.真正格式化时间的方法
#region 时间的友好显示
public static String FriendFormat(long dateTime)
{
String fTime = String.Empty;
try
{
DateTime dt = new DateTime(dateTime);
return FriendFormat(dt);
}
catch
{
return dateTime.ToString();
}
}
public static String FriendFormat(String dateTime)
{
String fTime = String.Empty;
try
{
DateTime dt = DateTime.Parse(dateTime);
return FriendFormat(dt);
}
catch
{
return dateTime;
}
}
public static String FriendFormat(DateTime dateTime)
{
if (dateTime == null)
{
return String.Empty;
}
int nowYear = DateTime.Now.Year;
int year = dateTime.Year;
if (nowYear - year == 0)
{
//本年内
int nowMounth = DateTime.Now.Month;
int mounth = dateTime.Month;
if (nowMounth - mounth == 0)
{
//本月内
int nowDay = DateTime.Now.Day;
int day = dateTime.Day;
if (nowDay - day == 0)
{
//当天
int nowHour = DateTime.Now.Hour;
int hour = dateTime.Hour;
if (nowHour - hour == 0)
{
int nowMinute = DateTime.Now.Minute;
int minute = dateTime.Minute;
int diff = nowMinute - minute;
if (diff <2)
{
return "刚刚";
}
else
{
return $"{diff} 分钟前";
}
}
else
{
return dateTime.ToString("HH:mm:ss");
}
}
else
{
return dateTime.ToString("dd HH:mm:ss");
}
}
else
{
//跨月
return dateTime.ToString("MM-dd HH:mm:ss");
}
}
else
{
//跨年
return dateTime.ToString(DateTimeHelper.defaultDateTimeFormat); // "yyyy-MM-dd HH:mm:ss"
}
}
#endregion
5.效果