根据用户设置格式化日期和时间,但添加前导零

时间:2012-04-13 16:25:24

标签: c# formatting

我知道我可以通过使用datetime.ToString(“G”)从操作系统中的用户设置获取正确的时间格式,但是我想添加前导零以确保日期/时间在列中对齐。有没有办法用前导零(没有使用自定义格式字符串)格式化时间并让它以用户设置的格式输出?

4 个答案:

答案 0 :(得分:1)

“G”和“g”模式取决于“d”(短日期)模式。请参阅http://msdn.microsoft.com/en-us/library/8tfzyc64.aspx

您可以根据CultureInfo构建自定义DateTimeFormatInfoCultureInfo.CurrentCulture对象,但不要直接从源文化中复制ShortDatePattern,而是替换任何单个字母分别以“MM”和“dd”出现“M”或“d”。

答案 1 :(得分:0)

您不能同时拥有默认和自定义格式。

我认为你想要的是查看LongDatePattern来确定特定文化和相应分隔符的日/月/年顺序,并根据它创建自定义字符串。

附注:

  • 您可以考虑简单地将文本表中的结果值按空格对齐。
  • 如果您希望将数据用于任何事情,但使用通用格式(可能使用UTC值)的人类消费更好。

答案 2 :(得分:0)

有点低眉但它有效...

                    CultureInfo ci = CultureInfo.CurrentUICulture;

                string longtimepattern = ci.DateTimeFormat.LongTimePattern;
                longtimepattern = longtimepattern.Replace("m", "mm").Replace("mmmm", "mm") ;
                longtimepattern = longtimepattern.Replace("h", "hh").Replace("hhhh", "hh");
                longtimepattern = longtimepattern.Replace("H", "HH").Replace("HHHH", "HH");
                longtimepattern = longtimepattern.Replace("s", "ss").Replace("ssss", "ss");

                string shortdatepattern = ci.DateTimeFormat.ShortDatePattern;
                shortdatepattern = shortdatepattern.Replace("d", "dd").Replace("dddd", "dd");
                shortdatepattern = shortdatepattern.Replace("M", "MM").Replace("MMMM", "MM");

                string datestr = new DateTime(obj.TestDateTime_utc).ToLocalTime().ToString(shortdatepattern + " " + longtimepattern);

答案 3 :(得分:0)

public static class DateTimeExtension
    {
        public static string GetLocaleDateTimeFormating(this DateTime T )  
        {
            DateTimeFormatInfo sysUIFormat = CultureInfo.CurrentUICulture.DateTimeFormat;
            string customFormat = sysUIFormat.ShortDatePattern.Replace("d", "dd").Replace("M", "MM");
            customFormat += " " + sysUIFormat.ShortTimePattern.Replace("h", "hh").Replace("H", "HH");
            string newDate = T.ToString(customFormat);
            return newDate;
        }
    }

获取日期时间格式化值

 this.textBox1.Text = DateTime.Now.GetLocaleDateTimeFormating();