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.效果

      


      




 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值