1

OS のユーザー設定から datetime.ToString("G") を使用して正しい時刻形式を取得できることはわかっていますが、先頭にゼロを追加して、日付/時刻が列に収まるようにしたいと考えています。(カスタム書式文字列を使用せずに) 先頭にゼロを付けて時刻を書式設定し、ユーザーが設定した書式で出力する方法はありますか?

4

4 に答える 4

1

「G」と「g」のパターンは、「d」(短い日付)のパターンに依存します。http://msdn.microsoft.com/en-us/library/8tfzyc64.aspxを参照してください。

に基づいてカスタムCultureInfoまたはオブジェクトを構築できますが、ソース カルチャから を直接コピーする代わりに、 "M" または "d" の単一文字出現箇所をそれぞれ "MM" および "dd" に置き換えます。DateTimeFormatInfoCultureInfo.CurrentCultureShortDatePattern

于 2012-04-13T16:59:52.943 に答える
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();
于 2012-04-13T22:42:23.993 に答える
0

デフォルトとカスタムのフォーマットを同時に持つことはできません。

あなたが望むのは、LongDatePatternを見て、特定のカルチャと対応する区切り記号の日/月/年の順序を把握し、それに基づいてカスタム文字列を作成することだと思います。

補足:

  • 代わりに、結果の値をテキスト テーブルにスペースで揃えることを検討することもできます。
  • 人間が消費する以外の目的でデータを使用する場合は、ユニバーサル形式 (潜在的に UTC 値を使用) を使用する方が適切です。
于 2012-04-13T16:58:54.840 に答える
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);
于 2012-04-13T19:41:00.490 に答える