1

DateTimeによって返されたローカル タイムゾーンからDateTime.NowUtc 以外の別のタイムゾーンに変換するにはどうすればよいですか? デスクトップには がTimeZoneInfo.ConvertTimeBySystemTimeZoneId()ありますが、Windows phone では利用できません!

このJavaスニペットは、私がやりたいことを大まかに示しています

SimpleDateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.US); 
TimeZone tz = TimeZone.getDefault();
format.setTimeZone(TimeZone.getTimeZone("GMT"));
str = format.format(new Date());
4

2 に答える 2

7

TimeZoneInfolocal および utc 以外のオブジェクトを作成する方法がないため、システム ライブラリを使用してこれを行うことはできません。彼らはまた、クラスを封印しました。

ただし、この単純なライブラリを使用して、非ローカル タイム ゾーンへの変換を有効にすることができます。 https://nuget.org/packages/WinRTTimeZones

次のように使用します。

using TimeZones;    

public void ConvertTime()
{
    // Get the time zone we want

    var tz = TimeZoneService.FindSystemTimeZoneById("Central Standard Time");
    var dt = new DateTime(1990, 7, 1, 12, 0, 0, DateTimeKind.Utc);

    // This time will be central time
    var local = tz.ConvertTime(dt);
}

が変換されたらDateTime、必要に応じてフォーマットするのは簡単です。ユーザーが日付を理解しやすいように、日付をローカル形式 (ローカル タイムゾーンではなく) でフォーマットすることをお勧めします。

于 2013-01-09T08:46:40.123 に答える
0

次のように使用します。

public String getNationTime(String Zone)
    {
        DateTime todayutc = DateTime.UtcNow;
        string todaydate = todayutc.ToShortDateString();
        string todaytime = todayutc.TimeOfDay.ToString().Split('.')[0];
        Zone = Zone.Replace("GMT", "");
        if (Zone.Length == 0)
            return todaytime;

        int zoneHour = int.Parse(Zone.Split(':')[0]);
        int zoneMin = int.Parse(Zone.Split(':')[1]);

        TimeSpan diff = new TimeSpan(zoneHour, zoneMin, 00);
        todayutc = todayutc.Add(diff);

        return todayutc.TimeOfDay.ToString().Split('.')[0];
    }
于 2013-03-12T08:58:06.547 に答える