C# 获取当前本地时间

C# 获取当前本地时间,c#,android,datetime,xamarin.android,C#,Android,Datetime,Xamarin.android,我有一段代码,当用户预订时在服务器上执行。 该代码获取当前的世界时间 现在我可以根据时区更改时间了。目前我想使用澳大利亚的时间,即使服务器在美国 我该怎么做呢 我目前的代码是: booking.CreateDateTime = DateTime.Now.ToUniversalTime(); 您可以使用TimeZoneInfo DateTime hwTime = new DateTime(2007, 02, 01, 08, 00, 00); try { TimeZoneInfo hwZon

我有一段代码,当用户预订时在服务器上执行。 该代码获取当前的世界时间

现在我可以根据时区更改时间了。目前我想使用澳大利亚的时间,即使服务器在美国

我该怎么做呢

我目前的代码是:

booking.CreateDateTime = DateTime.Now.ToUniversalTime();

您可以使用
TimeZoneInfo

DateTime hwTime = new DateTime(2007, 02, 01, 08, 00, 00);
try
{
   TimeZoneInfo hwZone = TimeZoneInfo.FindSystemTimeZoneById("Hawaiian Standard Time");
   Console.WriteLine("{0} {1} is {2} local time.", 
           hwTime, 
           hwZone.IsDaylightSavingTime(hwTime) ? hwZone.DaylightName : hwZone.StandardName, 
           TimeZoneInfo.ConvertTime(hwTime, hwZone, TimeZoneInfo.Local));
}
catch (TimeZoneNotFoundException)
{
   Console.WriteLine("The registry does not define the Hawaiian Standard Time zone.");
}                           
catch (InvalidTimeZoneException)
{
   Console.WriteLine("Registry data on the Hawaiian STandard Time zone has been corrupted.");
}

但我也建议您与许多功能和支持一起使用

您可以使用
时区信息

DateTime hwTime = new DateTime(2007, 02, 01, 08, 00, 00);
try
{
   TimeZoneInfo hwZone = TimeZoneInfo.FindSystemTimeZoneById("Hawaiian Standard Time");
   Console.WriteLine("{0} {1} is {2} local time.", 
           hwTime, 
           hwZone.IsDaylightSavingTime(hwTime) ? hwZone.DaylightName : hwZone.StandardName, 
           TimeZoneInfo.ConvertTime(hwTime, hwZone, TimeZoneInfo.Local));
}
catch (TimeZoneNotFoundException)
{
   Console.WriteLine("The registry does not define the Hawaiian Standard Time zone.");
}                           
catch (InvalidTimeZoneException)
{
   Console.WriteLine("Registry data on the Hawaiian STandard Time zone has been corrupted.");
}

但我也建议使用大量功能和支持,我个人会将日期作为UTC存储在服务器上,无论预订在哪里进行。当您在客户机上显示此预订时,只需将UTC转换回本地时间

或者,如果你想把时间看成是澳大利亚人而不是真正在澳大利亚

        TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("AUS Eastern Standard Time");
        DateTime UKTime = DateTime.Now;
        Console.WriteLine("United Kingdom Time {0}", UKTime);
        DateTime CurrentUTC = UKTime.ToUniversalTime();
        Console.WriteLine("UTC Time {0}", UKTime);
        DateTime OzzieTime = TimeZoneInfo.ConvertTimeFromUtc(CurrentUTC, tzi);
        Console.WriteLine("Ozzie Time {0}",OzzieTime);
        Console.ReadLine();
这就产生了

United Kingdom Time 31/10/2012 00:30:10
UTC Time 31/10/2012 00:30:10
Ozzie Time 31/10/2012 11:30:10

我个人会将日期作为UTC存储在服务器上,无论预订是在哪里进行的。当您在客户机上显示此预订时,只需将UTC转换回本地时间

或者,如果你想把时间看成是澳大利亚人而不是真正在澳大利亚

        TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("AUS Eastern Standard Time");
        DateTime UKTime = DateTime.Now;
        Console.WriteLine("United Kingdom Time {0}", UKTime);
        DateTime CurrentUTC = UKTime.ToUniversalTime();
        Console.WriteLine("UTC Time {0}", UKTime);
        DateTime OzzieTime = TimeZoneInfo.ConvertTimeFromUtc(CurrentUTC, tzi);
        Console.WriteLine("Ozzie Time {0}",OzzieTime);
        Console.ReadLine();
这就产生了

United Kingdom Time 31/10/2012 00:30:10
UTC Time 31/10/2012 00:30:10
Ozzie Time 31/10/2012 11:30:10