2009-07-31 15 views
3

MO/TU/WE/TH/FR/SA/SUなど、週の2文字の曜日名を取得する方法はありますか?Windowsで短い曜日の名前を取得するためのプログラム的な方法はありますか?

現在、私が唯一のFormatDateTime()を使用しての知っている:

"ddd" returns "Fri" 
"dddd" returns "Friday" 

主な理由は、私が1または2文字の曜日名のローカライズされたバージョンを入手したいということです:DDD」の

セイ金曜日"返されます:
フランス語Windows =" Vendredi "、2文字は" VE "、1番目と2番目の文字です。
中国語Windows = "星期五"、charは "五"、3番目の文字です。
日本語Windows = "金曜日"の場合、charは "金"になります。最初の文字です。

Edit1: 現在、Delphiを使用していますが、他の言語にも当てはまると思います。

EDIT2:私は含む定数のテーブルを構築する必要がないようが は、簡単に言えば、私は、いくつかの関数や定数を使用して「ShortDayName」の短いバージョンを取得するために探していますすべての可能なWindows言語の7日間の「短い」曜日名。

このような機能が本当に存在するのだろうかと思います。
Outlookのカレンダーの1または2文字の曜日の名前は、ハードコードされている可能性があります。

+0

どの言語を使用しますか? – Stefan

+0

Delphiを使用しますが、他の言語にも適用されます。 – Atlas

+0

単語の最初の2文字だけを探しているなら、(ddddを使って)完全な文字列を取り戻し、最初の2文字をつかんで残りを落としてみませんか? –

答えて

2

Click Here

カスタムの日付フォーマットで基準を示しています。

「ddd」規格を使用してトリミングすることもできます。

+1

そのページに表示されているもののどれが、彼がすでに持っているものよりも何かを与えてくれますか?具体的には、そのページのどの部分が2文字の略語を取得するかを示していますか?私は '' ddd ''の日付形式しか見ていません。これは '' FormatDateTime''がすでに行っている不特定の長さの短縮形を与えています。 –

+0

利用可能な規格を記載しています。私は標準を変える方法を述べなかった。私は自分の投稿を編集します。 – user141594

1

デルファイのルーチンは何も特別なことをしません - 彼らはOSに頼みます。 これまでの手順は次のとおりです。Retrieving Time and Date Information私はMSDNのドキュメントを見て、thisを見つけました。

ここでは、実際に「2文字の曜日名」または「3文字の曜日名」などはありません。 Delphiではネイティブ(Delphiでは「long」)、Delphiでは「short」、Delphiでは省略されています(Vista以上)。

たとえば、月曜日の月の曜日の短縮名:月(3文字、en-US)、Пн(2文字、ru-RU)。

したがって、おそらくLOCALE_SSHORTESTDAYNAMEXフォーマット(MSDNでは「ショート」と呼ばれ、デルファイには表示されません)がありますが、Vista以上でのみ使用できます。例えば

、次のコード:

const 
    LOCALE_SSHORTESTDAYNAME1 = $60; 

procedure TForm1.Button1Click(Sender: TObject); 
begin 
    SetThreadLocale($409); 
    ShowMessage(
    GetLocaleStr(GetThreadLocale, LOCALE_SSHORTESTDAYNAME1, '') + #13#10 + 
    GetLocaleStr(GetThreadLocale, LOCALE_SABBREVDAYNAME1, '') 
      ); 
end; 

はあなたが表示されます:

のMo

しかし、ロシアの意志出力のためにこれをやって:

Пн

Пн

は私の編集がより明確に答える作るホープ;)

+4

Delphiの関数は何もしません。それは明らかに間違っています。彼らは何もしません*特別*。彼らはOSによって定義されたロケール文字列を使用します。 –

+0

ありがとう、私は私の答えを修正しました。おそらく私の英語は良くありません;) – Alex

+0

アレキサンダーは、私が探していたようです。しかし、私はVistaを所有していないので、私はそれをテストすることはできません誰もがこれを試した? – Atlas

3

あなたがShortDayNamesLongDayNamesと曜日のローカル名を取得することができ、あなたが使用することができますDayOfWeekを入力して、その日の数値を取得します。

ShortDayNames[Index]; //Returns Fri 

または

LongDayNames[Index]; //Returns Friday 

私は2つの文字にそれらを短縮するために知っている唯一の方法は、結果の文字列

LeftStr(LongDayNames[Index],2);//Returns Fr 

をトリミングするだろうだから、今日の日は

LeftStr(LongDayNames[DayOfWeek(date)],2); //Returns Fr 
だろう
関連する問題