加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C# – 我是否取代了完美的代码?

发布时间:2020-12-15 20:53:04 所属栏目:百科 来源:网络整理
导读:我有一个快速的功能来格式化日期,这里是: public static string archiveServerDateTime(string datetime) { DateTime tempDateTime = DateTime.ParseExact(datetime,"dd.MM.yyyy HH:mm:ss",null); return tempDateTime.ToString("yyyy/MM/dd:HH:mm:ss"); }
我有一个快速的功能来格式化日期,这里是:

public static string archiveServerDateTime(string datetime)
    {
        DateTime tempDateTime = DateTime.ParseExact(datetime,"dd.MM.yyyy HH:mm:ss",null);
        return tempDateTime.ToString("yyyy/MM/dd:HH:mm:ss");
    }

只找到函数的输出= 2009.10.22:16:21:03,令人惊讶的是这只是在1台生产服务器上,测试服务器工作得很好……

所以现在我把功能重写为旧式风格:

public static string archiveServerDateTime(string datetime)
    {
        DateTime tempDateTime = DateTime.ParseExact(datetime,null);
        string yearPart = Convert.ToString(tempDateTime.Year);
        string monthPart = Convert.ToString(tempDateTime.Month).PadLeft(2,'0');
        string dayPart = Convert.ToString(tempDateTime.Day ).PadLeft(2,'0');
        string hourPart = Convert.ToString(tempDateTime.Hour).PadLeft(2,'0');
        string minutePart = Convert.ToString(tempDateTime.Minute).PadLeft(2,'0'); 
        string secondPart = Convert.ToString(tempDateTime.Second).PadLeft(2,'0');

        return yearPart + @"/" + monthPart + @"/" + dayPart + ":" + hourPart + ":" + minutePart + ":" + secondPart; 
        //return tempDateTime.ToString("yyyy/MM/dd:HH:mm:ss");
    }

所以我问女士们,先生们,我是否正在替换完美的代码,或者这是某种微软的错误?我们真的可以相信这些看起来不那么坚固的新语言功能,还是我只是缺少某些东西?

解决方法

您应该将DateTimeFormatInfo.InvariantInfo作为参数传递给DateTime.ToString方法. /格式字符串并不一直意味着“/”字符.它解析为当前文化的日期分隔符:

return tempDateTime.ToString("yyyy/MM/dd:HH:mm:ss",DateTimeFormatInfo.InvariantInfo);

通常,总是在ToString和Parse方法中明确指定文化(不仅仅是在DateTimes上)是一种很好的做法. FxCop(VS代码分析)具有在不执行此操作时吐出警告的规则.这对非美国文化至关重要,许多程序员经常低估其重要性.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读