2017-11-15 7 views
-3

をフォーマットするC#のdefault.Now最後のポスト対vb.netデフォルトdate.nowフォーマット私は私から来た

c# change date type format to ddmmyyyy

私はDateかに問題があるVB.NetのWinFormアプリケーションで仕事をしなければなりませんDateTimeタイプ。

私は通常、C#で動作しますが、今ではこの問題があります。他のプログラマがacrrossになったという共通の問題です。

私はコントロールパネルで "dd/MM/yyyy"のような日時フォーマットを定義しています。私のWinフォームでは、私はこのI C#

のDateTime AA = DateTime.Now

DateTime.Now取り出しのような変数を定義し、場合、それはhere

に言うようにレジストリエディタでもYチェック現在の日付を "dd/MM/YYYY"の形式で表示します。

しかし、私はこの

Dim val As New Date 
val = Date.Now 

valようVB.Netに同じに言わせれば、私は

を設定しても

"MM/DD/YYYY" の形式で現在の日付を持っています

val = Date.Now.ToString( "dd/MM/yyyy")

val k "MM/dd/yyyy"と書式設定します

変数Datetimeに割り当てるたびに、自動的に "dd/MM/yyyy"という形式が "MM/dd/yyyy"に変換されます。

どのように私はC#のようにDatetime型を受け入れるVB.Netを構成できますか?私はコントロールパネルからそれを取る必要があります。

+3

'DateTime.Now'は、日付/時刻を_any_形式で返しません。これは生の日付/時刻の値です。書式設定は、生の値を文字列表現(これが印刷するもの)に変換する場合にのみ意味があります。 – xxbbcc

+0

VBの 'Date'は' DateTime'のエイリアスに過ぎないので、 'Date.Now'と' DateTime.Now'は同じです。ここに表示されていないものの影響を受けなければなりません。どちらも独自のフォーマットを持っていません。 –

+0

存在しない問題を追いかけています。 VSはVB IDE(これは最近のバージョンで変更されている可能性があります)で不変のカルチャを使用します。日付は書式を持たない - 形式は、日付の値が人間に***表示される***の形式です。 – Plutonix

答えて

1

実際の問題はありませんが、認識される違いは、VBがDateリテラルをサポートしているためです(C#ではサポートされていません)。 C#とVBのサポートリテラルの両方など、数値型、文字列、ブール、用

var str = "Hello World"; 
var num = 100; 
var flag = true; 
Dim str = "Hello World" 
Dim num = 100 
Dim flag = true 

だけVBはしかし日付のリテラルをサポートしています。あなたはVBで基本的に同じことを行うことができます

var dt = new DateTime(1969, 6, 19); 

:たとえば、C#で、あなたがハードコーディングされた日付は、このような何かをしなければならないでしょう

Dim dt As New DateTime(1969, 6, 19) 

が、

Dim dt = #6/19/1969# 

とき:あなたもこれを行うことができますVBで日付リテラルを使用するといつもはM/dd/yyyy形式を使用します。システム設定を利用できないのは、異なるマシンで同じコードが異なる動作をするためです。

デバッガでプロジェクトを実行し、ウォッチウィンドウなどを使用して変数やその他の式の値を表示すると、デバッガは型がサポートしている場合はリテラル値を表示します。型がリテラルをサポートしていない場合は、オブジェクトにToStringを呼び出した結果が表示されます。つまり、デバッガではVBプロジェクトのDateTime値のM/dd/yyy形式のものが表示されます。これは、リテラルDateを表示しているためです。C#プロジェクトでは、システム設定によって異なりますDateTimeToStringを呼び出した結果

これはまったく問題ではありません。変数DateTimeの実際の値は変更されません。実際にはフォーマットはまったく含まれていません。彼らはシステム内の数字だけです。書式は、値をテキストとして表す場合にのみ問題になります。あなたがそれをする必要があるときは、ToStringをあなたの価値に呼ぶでしょう。それは、VBかC#のどちらのシステム設定をも尊重します。

この回答では、DateDateTimeという用語を使用しています。 DateTimeは.NETタイプで、Dateは組み込みVBデータタイプです。どちらの言語も固有のデータ型のリテラルをサポートしていますが、VBのみが日付の組み込みデータ型を持っているため、VBのみがリテラル日付をサポートしています。 C#のintとVBのIntegerInt32タイプのエイリアスなので、VBのDateDateTimeタイプのエイリアスですが、C#では同等のものはありません。

関連する問題