DateTime time = DateTime.Now;
を使用して現在時刻を取得できますが、この時刻をTimeZoneInfo
と比較して、米国のUTCオフセットを使用して同じ時刻を取得します。現在の時刻が米国のタイムゾーンにあるかどうかを確認する方法
基本的に、提供された時間は、米国(ハワイとアラスカを含む)に関連付けられた6つのタイムゾーンの1つに含まれていることを知りたいと思います。
DateTime time = DateTime.Now;
を使用して現在時刻を取得できますが、この時刻をTimeZoneInfo
と比較して、米国のUTCオフセットを使用して同じ時刻を取得します。現在の時刻が米国のタイムゾーンにあるかどうかを確認する方法
基本的に、提供された時間は、米国(ハワイとアラスカを含む)に関連付けられた6つのタイムゾーンの1つに含まれていることを知りたいと思います。
私はあなたが発行した場合、あなたはインターネットからそれを得ることができます。あなたは以下の機能をチェックします。
DateTime DT = GetNISTDate(true);
MessageBox.Show(DT.ToString());
public static DateTime GetNISTDate(bool convertToLocalTime)
{
Random ran = new Random(DateTime.Now.Millisecond);
DateTime date = DateTime.Today;
string serverResponse = string.Empty;
// Represents the list of NIST servers
string[] servers = new string[] {
"64.90.182.55",
"206.246.118.250",
"207.200.81.113",
"128.138.188.172",
"64.113.32.5",
"64.147.116.229",
"64.125.78.85",
"128.138.188.172"
};
// Try each server in random order to avoid blocked requests due to too frequent request
for (int i = 0; i < 5; i++)
{
try
{
// Open a StreamReader to a random time server
StreamReader reader = new StreamReader(new System.Net.Sockets.TcpClient(servers[ran.Next(0, servers.Length)], 13).GetStream());
serverResponse = reader.ReadToEnd();
reader.Close();
// Check to see that the signiture is there
if (serverResponse.Length > 47 && serverResponse.Substring(38, 9).Equals("UTC(NIST)"))
{
// Parse the date
int jd = int.Parse(serverResponse.Substring(1, 5));
int yr = int.Parse(serverResponse.Substring(7, 2));
int mo = int.Parse(serverResponse.Substring(10, 2));
int dy = int.Parse(serverResponse.Substring(13, 2));
int hr = int.Parse(serverResponse.Substring(16, 2));
int mm = int.Parse(serverResponse.Substring(19, 2));
int sc = int.Parse(serverResponse.Substring(22, 2));
if (jd > 51544)
yr += 2000;
else
yr += 1999;
date = new DateTime(yr, mo, dy, hr, mm, sc);
// Convert it to the current timezone if desired
if (convertToLocalTime)
date = date.ToLocalTime();
// Exit the loop
break;
}
}
catch
{
/* Do Nothing...try the next server */
}
}
return date;
}
あなたが必要としていることはすでに分かっているようです。
var currentTime = DateTime.Now();
は、現在のシステム時刻を返します。
var zone = TimeZoneInfo.Local;
は、現在のシステムタイムゾーンを提供します。標準時(冬)のUTC-5〜UTC-10、夏時間のUTC-4〜UTC-10をタイムゾーンと比較するだけです。
しかし、あなたのコメントを見るだけで、時間が米国のタイムゾーンの1つに入っているからといって、それが米国にあるわけではありません。北米と南米に同じタイムゾーンを持つ国がたくさんあります。
これは私が言及しようとしていたものです。私は 'TimeZoneInfo'に慣れていませんでした。 +1名誉; 'DateTime.Now.ToUniversalTime()' – Bob2Chiv
@ psubsee2003を使用してオフセットを取得しようとしていました。同意します。真剣に私は困っている!私はWindows Phone 7でアプリケーションを作成しています。現在の国名を表示したいのですが! – vir
@ vir_28私はWin7の携帯電話の開発者は一度もやっていませんが、GPS情報にアクセスして逆ジオコーディングを行うと、 – psubsee2003
これは何をしたいあなたを取得し、他のタイムゾーンを取得する方法の例として役立つはずです。
class Program
{
static void PrintTime(string timeZoneId)
{
Console.WriteLine(
TimeZoneInfo.ConvertTimeBySystemTimeZoneId(DateTime.UtcNow,
timeZoneId).ToShortTimeString() +
" is the time in " + timeZoneId);
}
public static void Main()
{
PrintTime("Hawaiian Standard Time");
PrintTime("Alaskan Standard Time");
PrintTime("Pacific Standard Time");
PrintTime("US Mountain Standard Time");
PrintTime("Central Standard Time");
PrintTime("US Eastern Standard Time");
}
}
米国州、ハワイとアラスカを数え、リーであります6つのタイムゾーンがあります。あなたは大陸アメリカだけを指していますか? – psubsee2003
米国は実際にタイムゾーンを所有していません。あなたが本当に知りたいのは、interestedTimeがUTC -5からUTC -10までのどこかにあるかどうかです。これは6つのタイムゾーンであることに注意してください。ハワイとアラスカを除外すると、UTC -5〜UTC-8の4つのゾーンがあります。 – Bob2Chiv
私たちはどうすれば助けますか?あなたはあなたがしたいことを既に知っているように聞こえます。ちょうどそれをやってください。 –