5

私は複数のアプローチを試しましたが、これはそのうちの1つです:

System.Globalization.DateTimeFormatInfo format = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat;      
return dt.Value.ToString (format.ShortTimePattern);

この問題は、.NET 3.5 が "." を返すことです。バグである可能性が最も高い時間区切りとして (私のノルウェー語ロケールはコロンを使用しているため): .NET (3.5) は、it-IT カルチャの TimeSeparator としてコロンの代わりにドットを使用して時間をフォーマットしますか?

私もここを見ました: iPhoneで現在の現地時間を取得していますか?

しかし、MT は NSDateFormatter に setTimeStyle を持っていないようですか?

それで、誰かが袖に魔法のトリックを持っていますか?

私の目標は出力することです:

21:00 / 午後9:00

10:09 / 午前10:09

iPhone のステータスバーのように。

4

2 に答える 2

6

これを試して:

var formatter = new NSDateFormatter ();
formatter.TimeStyle = NSDateFormatterStyle.Short;
Console.WriteLine (formatter.ToString (DateTime.Now));

とはいえ、ノルウェー語ロケールの時間区切りとしてのドット/コロンのバグは、Mono 2.12 で修正されているため、MonoTouch が Mono 2.10 の代わりに Mono 2.12 を使用するように切り替わると (できれば来年初め)、この管理された代替手段を使用できるようになります。それも:

Console.WriteLine (DateTime.Now.ToString (new CultureInfo ("nb-NO").DateTimeFormat.ShortTimePattern));
于 2012-09-26T09:38:49.830 に答える
1

私は mono ソースについて簡単な調査を行い、ShortTimePattern と TimeSeperator が互いに関連していないことを発見しました(私が間違っている場合は、Mono-guru が私を訂正してください)。

そこで、iOS のみ (クロスプラットフォームではない) のソリューションを作成しようとしました。つまり、次のとおりです。

using MonoTouch.Foundation;
    ...
    public override void ViewDidLoad ()
    {
        base.ViewDidLoad ();

        var d = DateTime.Now;
        Console.WriteLine("NSDate: " + GetCorrectTime(d));
    }
    ...
        // iOS-only (not cross-platform)
    public string GetCorrectTime (DateTime d)
    {
        var nsdate = DateTimeToNSDate(d);
        var nsdateformatter = new .NSDateFormatter();
        nsdateformatter.DateStyle = NSDateFormatterStyle.None;
        nsdateformatter.TimeStyle = NSDateFormatterStyle.Short;
        return nsdateformatter.ToString(nsdate);
    }
    ...
        // DateTime to NSDate was taken from [that post][2]
    public static NSDate DateTimeToNSDate(DateTime date)
    {
        return NSDate.FromTimeIntervalSinceReferenceDate((date-(new DateTime(2001,1,1,0,0,0))).TotalSeconds);
    }

出力:

NSDate: 17:40

シミュレーターと "nn-NO" (ノルウェー語ニーノシュク (ノルウェー)) ロケールでテストすることに注意してください。

于 2012-09-26T09:38:23.530 に答える