2016-08-26 3 views
-2

アプリケーションのローカルコンピュータにユーザーの時刻形式に従って日付と時刻を表示しようとしています。 たとえば、ローカルコンピュータが24時間形式で時刻を表示する場合、アプリケーションは24時間形式で時刻を表示する必要があります。 12時間形式の場合、アプリケーションは12時間形式で表示する必要があります。私はコードで以下の設定を取得し、それに応じて日付と時刻を表示したいと考えています。私のアプリケーションのC#でコンピュータの時刻形式を取得する

Local computer clock settings

既存のコードはDateTime.UtcNowを使用し、私はそれはそれは、コンピュータの時刻の形式に関係なく、12時間形式で時刻を表示しDateTime.Now

`public static DateTime FormatTime() 
    { 
     return DateTime.UtcNow.ToLocalTime(); 
    }` 

を使用するように変更すべきではありません。ユーザーのコンピュータの時刻形式を取得する方法はありますか?

+2

何を試しましたか?これはコーディングサービスではありません。http://stackoverflow.com/help/how-to-askを参照してください。あなたが直面している特定の問題を持つ質問を編集してください。 – Esko

+0

あなたが求めているのは「コンピュータ時間形式」ではなくローカルコンピュータ上の現在のユーザーの時刻形式。 –

+0

ここで必要な答えを見つけてください。 https://msdn.microsoft.com/en-us/library/az4se3k1%28v=vs.110%29.aspx 通常、件名のビットを検索して前に試してみると質問を投稿する。私たちはあなたが必要とするコードをここに用意するのではなく、動作しないコードを修正するためにここにあります。次回は、Googleでちょっと検索して見つけたものから試してみてください。それがうまくいかない場合は、ここに来てコードを投稿して問題の説明と説明をしてください。 –

答えて

2

これを行う必要はありません。アプリケーションを適切にローカライズすると、アプリケーションはすでにそれを行います。

あなたはDateTimeを持っている場合は、

textBox1.Text = dateTime.ToShortDateString(); 

のようなものをやっても、すでに動作します。同じことが日付/時刻の解析にも適用されます。 .NETアプリケーションのローカライズとグローバリゼーションに関するMSDNを読むことをお勧めします。あなたはすでにあなたのためにどれくらい遂行されているのか驚くでしょう。ない再発明ホイールを行います... DateTime.ToStringを使用する場合

0

常に(例えば"yyyy-MM-did")の代わりに、カスタム書式指定文字列の標準フォーマット文字列(短い日付用など"d")を使用し、常に明示的にIFormatProviderパラメータにCultureInfo.CurrentCultureを指定します誰でもあなたのコードを読んでもあなたの意図がはっきりしていることを確認してください。

0

CultureInfoオブジェクトのDateTimeFormatプロパティ(hereと定義されています)を使用すると、現在のユーザーの形式を読み取ることができます。

var iDateTimeFormat = CultureInfo.CurrentCulture.DateTimeFormat; 
0
DateTime date = DateTime.Now; 
//formatted using the ShortDatePattern 
Console.WriteLine(date.ToString("d"), CultureInfo.InstalledUICulture); 

CultureInfo.InstalledUICultureは、オペレーティングシステムの言語

+0

私はそれに反対してお勧めします。現在のスレッドのUIカルチャに依存する必要があります。このデフォルトはOSカルチャですが、たとえばアプリケーションで複数の言語と文化を選択して選択する場合など、変更することもできます。 –

+0

@ThorstenDittmarあなたは絶対に正しいですが、その人はアプリケーションコンテキストではなくOSコンテキストについて質問していますが、これはCulture(デフォルトのOSカルチャ)、またはユーザーはある時点で – SilentTremor

0

である私はそれが唯一のシステム日付時刻形式による撮影され、デフォルトでは、ここで私のアプリケーションとしてみました。私はシステム時間を変更しているとき、アプリケーション時間も自動的に変化します。私はdatetimeコントロールでウィンドウアプリケーションを試しました。あなたは何をどのようにしていますか?

+0

私のアプリケーションの既存のコードはDateTime.UtcNowを使用しており、DateTime.Nowを使用するように変更しないでください。 'public static DateTime FormatTime() { return DateTime.UtcNow.ToLocalTime(); } ' コンピュータの時刻形式に関係なく、時刻を12時間形式で表示します。 – user4639144

関連する問題