2017-04-24 3 views
0

私は、プロジェクトのトラックをアクセスデータベースにリンクするためのプログラムを作成しました。コードはVB.NETで書かれていますプログラムを異なる言語/日付形式で動作させるvb

私はフランス語で日付を持つコンピュータを使用しています。全体がその言語に従ってコード化されています。しかし、今では会社内のすべてのコンピュータにプログラムをインストールする必要があります(英語とフランス語があります)。彼らが使っている別のプログラムのため、英語のコンピュータの言語を変更することはできません。

英語の日付で作業するにはどうしたらよいですか?

CultureInfo.CurrentCulture.DisplayName 

そして私は、「アラームの期日にそれを比較するために今日の日付を使用しています(フランス語に今日の日付を変換する:

は、私はこの方法コンピュータの言語を検出しようとしました

Today = Today.toString(CultureInfo.CreateSpecificCulture("fr-CA") 

しかし、私のプログラムは、その後ロードされませんので、これはそれを行うための正しい方法ではないようです: "プロジェクトは、今日のために遅れるかによるものであるとき)私たちを防ぐために。

あなたが任意のアイデアを持っている場合、私はその説明に基づいて、彼らに

みんなありがとう

+0

実際には問題が発生している可能性があります。日付形式を気にする必要がある唯一の理由は、ストレージからテキストとして日付を読み取るか、テキストとしてストレージに保存する必要がある場合です。それ以外の状況では、日付はバイナリ、つまり数字だけであり、フォーマットはありません。たとえば、ユーザーが 'DateTimePicker'コントロールを介して日付を入力すると、すべてのユーザーは自分のシステムに適した日付形式を使用して行うことができ、コードではコントロールの' Value'プロパティから 'DateTime'値を取得し、どのフォーマットからも独立しています。 – jmcilhinney

+0

解決する問題があるかどうかを判断できるように、アプリで日付をどのように使用しているかを正確に説明してください。私はそこにないと思う。 – jmcilhinney

+0

誰かがプロジェクトを作成するときに、DateTimePickerで配信日を選択する必要があります。その後、プロジェクトはAccessデータベースに保存されます。次に、列 "アラーム"があるプロジェクトを表示するDataGridViewがあります。納期が今日の日付よりも高い場合は、アラームが表示されます(セルは赤色に変わります)。現在、コンピュータが英語に設定されている場合、アラーム列には何も表示されません –

答えて

0

を読むために喜んだ、あなたが作成しているもの以外の問題はありません。実際にStringsが必要でない限り、日付/時刻をStringsに変換しないでください。そうしない。 DateTimePickerの場合

は、あなたは単にLongまたはShortFormatを設定すると、ユーザは、自分の現在のカルチャ設定に基づいて、自分のシステムに適した形式で日付が表示されます。コードでは、ValueプロパティからDateTime値を取得し、バイナリ値なので、フォーマットは関係ありません。

DataGridViewの場合、DateTimeの値を含む列がある場合、現在のカルチャに基づいた形式で表示されます。基礎となる値はバイナリであるため、フォーマットはありませんが、グリッドは表示目的でフォーマットを使用する必要があります。各ユーザーは、システムのカルチャ設定がその形式を実行するために使用されるため、ユーザーが期待するものを表示します。使用する形式が気に入らない場合は、列のDefaultCellStyle.FormatプロパティをLongShortの形式のそれぞれDateTimePickerと一致するように "D"または "d"に設定できます。

このように、このような列のセルの値はDateTimeの値であり、Stringsではないため、フォーマットは関係ありません。今日の日付と比較したい場合は、バイナリ形式(例:

If CDate(myDataGridViewCell.Value) > Date.Today Then 

フォーマットが問題のある場所では、アプリケーションが現在のシステムカルチャ設定を自動的に使用するため、フォーマットについて心配する必要はありません。

関連する問題