• ベストアンサー

C#による日付のフォーマット変換について

初めまして。 大学にてC#を勉強中の身なのですが、文字列の日付フォーマット 【YYYY/MM/DD → DD-MMM-YY】 への変換方法が分からず困っています。 よろしければどなたかご教授して頂けないでしょうか? ※このような形に変換を希望しています string型 【2000/01/01】 → string型 【01-Jan-00】

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

一旦 DateTime 型に変換すればいいと思います。 string datestring1 = "2000/01/01"; System.DateTime dt; if( System.DateTime.TryParse(datestring1,out dt) ) { string datestring2 = dt.ToString("dd-MMM-yy", System.Globalization.DateTimeFormatInfo.InvariantInfo); MessageBox.Show(datestring2); }

as84wtfgsv115
質問者

お礼

返事が遅くなり申し訳ありません。 分かりやすい回答ありがとうございました。 一度DateTime型に変換するという事すら思いつかず、ずっとstring型でなんとかしようと悩んでいました。 型や変換についてもっと勉強したいと思います。

その他の回答 (1)

回答No.1

こんばんは。 DateTime.Parse()で日付にしてから、 カレンダーで書式指定するとか、 New DateTime()で日付にして、ToString()で書き出すとか・・・。

as84wtfgsv115
質問者

お礼

返事が遅くなり申し訳ありません。 型の変換を思いつくことができず、ずっと悩んでいました。 もっと基本的な事を勉強したいと思います ありがとうございました

関連するQ&A

  • 日付のフォーマット変換について

    はじめまして。 日付フォーマット変換について質問です。 「Tue Sep 16 04:06:38 JST 2003」 上記のようなStringの値を yyyy/mm/dd hh:mm:ssのように 変換したいのですが、どのような方法を とれば良いのかわからず困っております。 よろしくお願い致します。

    • ベストアンサー
    • Java
  • 日付フォーマットの変換についての質問。

    こんにちは。宜しくお願いします。 現在、String型で受け取った日付の文字列をData型にして、さらに違う日付フォーマットにするプログラミングを書いています。 具体的には、 String型の"Wed, 07 Dec 2005 00:00:00 +0900"を、 Date型の"Wed, 07 Dec 2005 00:00:00 +0900"に変更して、 同じくDate型の、"2005-12-07T00:00:00+09:00"にしたいのです。 今躓いてる点は、String型の日付をDate型に変換する所で、エラーメッセージが、” Unparseable date: "Wed, 07 Dec 2005 00:00:00 +0900"”となっており、コード修正しても上手くいきません。 現時点でのコードを記述しますので、お時間があるときにご教授お願いします。 ---- import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; /** * 時間のフォーマット変換テスト。 * */ public class testConvertTime { public static void main(String[] args) throws ParseException { String strPreTime = "Wed, 07 Dec 2005 00:00:00 +0900"; //2005-12-07T03:00:12+09:00 SimpleDateFormat sdf = new SimpleDateFormat(); //日付の出力形式を設定 sdf.applyPattern( "EEE, dd MMM yyyy HH:mm:ss Z" ); //指定したフォーマットで日付が返される Date dat = sdf.parse(strPreTime); //java.util.Date dat = sdf.parse(strPreTime); } }

    • ベストアンサー
    • Java
  • 地域言語オプションの日付形式を用いての日付編集方法

    コントロールパネルの地域と言語オプションから 地域オプションのカスタマイズ内の日付タブにある 短い形式を元に日付の編集を行おうとしています。 しかしこのまま短い形式をしようすると、 「年月日」の形式を取得してしまいます。 今回の用件では「年月」のみ必要なので「日」の形式を除外した形式で 日付の編集を行う必要があります。 ただしコントロールパネルから日付の形式が変更できる為、 各クライアントの端末毎に日付の形式が異なる為(※1) 単純に文字列の編集で「年月」を取得することが出来ず困っております。 ※1 クライアント毎の日付形式の例と行いたい変換後の形式の例 短い形式 → 変換後の形式 yyyy/MM/dd → yyyy/MM yy/M/d   → yy/M yy/MM/dd' ('ddd')' → yy/MM/ dd/MM/yyyy → dd/yyyy 開発言語は VisualStudio2008 C# で開発を行っています。 皆さんのお力をお貸しいただけないでしょうか。

  • Stringのフォーマットの変換方法(Java)

    Java実行時の引数として渡した14桁の数値(文字列)を、 ----- yyyy-mm-dd hh:mm:ss ----- の形式にフォーマット変換したいです。 (日時のように書いてますが、型はDateやTimestampではなくStringのままでもOK) 文字列をsubstringメソッドで区切って、 その後に「-」や「:」と+で文字列連結させる方法も考えたのですが、 そのようにせずにもう少しシンプルに変換する方法はありませんでしょうか?

    • ベストアンサー
    • Java
  • 日付や時刻の"01"を" 1"に変換したいです。

    下記のような問題で悩んでいます。何かよいアイディアがありましたら教えて下さい。 【要件】 ・SimpleDateFormatで指定された書式の文字列にした後、年月日時分秒ミリ秒の"01"~"09"を" 1"~" 9"のように前0を半角スペースに一括変換したい(年は書式がyy形式の場合のみ)。 ・SimpleDateFormatへの書式はエラーが起きない限りどんなものでも受け入れる(通常、書くわけがない書式についても)。 例) "yyyy/MM/dd HH:mm:ss:SSS" "'yyyy/MM/dd HH:mm:ss:SSS形式:'yyyy/MM/dd HH:mm:ss:SSS"  ※''の中にあるMMはテキストなので英字のまま。 "yyyy/MMMMMMMMMMMMMMMMMMMM/dd HH:mm:ss:SSS"  ※Mの数は不明 "yyyy/MM/dd MM MM HH:mm:ss:SSS"  ※月の表示指定が複数 引数 :日付(yyyyMMddHHmmssSSS形式), SimpleDateFormatへの書式 戻り値:SimpleDateFormatで変換後に"01"~"09"を" 1"~" 9"にした文字列 自分なりの検討案としては下記になります。 a.引数の書式をそのままSimpleDateFormatに引き渡ずに、一部修正してから呼び出す。 例)"yyyy/MM/dd HH:mm:ss:SSS"→yyyy/_M/_d _H:_m:_s:__S" ※"_"は半角スペースです。 実際はMやdなどが2桁になる場合は変換しません。 かなりごりごり200行ぐらい試しに書いたのですが、対応できないケースが出てきてその都度エンドレス状態です。 ちょっとこのまま実装するわけにいきません。いつバグがでるか・・・。 b.SimpleDateFormatで変換後に年月日時分秒ミリ秒に該当する箇所に"01"~"09"があったら置換する。  引数の書式からMMやddのindexを保持して、SimpleDateFormatで変換後の該当indexに置換。 例) 書式:"yyyy/MM/dd_HH:mm:ss:SSS" 日付:"20090101010101001" "2009/01/01_01:01:01:001"→"2009/_1/_1__1:_1:_1:__1" ※"_"は半角スペースです。 但し前提として、書式とSimpleDateFormatで変換後の文字列が1対1になっている必要があります。 単純な例ですと 書式:"yyyy/MMMM/dd HH:mm:ss:SSS" 書式のddは11~12桁目ですが、SimpleDateFormatで変換後は下記のようにインデックスがずれます。 "2009/1月/01 01:01:01:001" "2009/12月/01 01:01:01:001" もしかしたら下記のような感じで吸収できるのかもしれませんが、ちょっと個人的に出来そうに思えませんでした。 月が1桁 かつ 書式が"M"の場合 月が1桁 かつ 書式が"MM"の場合 月が1桁 かつ 書式が"MMM"の場合 月が1桁 かつ 書式が"MMMM"の場合 月が1桁 かつ 書式が"Mxn"の場合 月が2桁 かつ 書式が"M"の場合 月が2桁 かつ 書式が"MM"の場合 月が2桁 かつ 書式が"MMM"の場合 月が2桁 かつ 書式が"MMMM"の場合 月が2桁 かつ 書式が"Mxn"の場合 ここ1,2週間ほど煮詰まっています。どなたかアドバイス頂けると助かります。 自分的なネックは書式が限りなくフリー形式なところです。

    • ベストアンサー
    • Java
  • エクセル日付について

    エクセル2000を使用しています。 文字列で 99/99/99 のデータを YYYY/MM/DD 日付け形式に変換したいのですが、 どうすればよいのでしょうか。 セルには、98/11/20とか 03/03/04 とあります。

  • yyyy/mm/ddをyymmddの文字列に

    一つの列にyyyy/mm/dd(日付)とyymmdd(文字列と標準が混在)が混在しているものを、全て文字列のyymmddにするために、区切り位置で全てを文字列にしてから文字操作でyymmddにしようとしてます。 vbaで区切り位置を使用してyyyy/mm/dd(日付)を文字列に変換するとdd/mm/yyyyと表示されてしまいます。vbaでやらずにそのまま区切り位置で文字列に変換するとそのままyyyy/mm/ddの表示のままなのに、vbaでやるとなぜdd/mm/yyyyになってしまうのでしょうか? vbaで日付yyyy/mm/ddを文字列yyyy/mm/ddに変換する方法を教えてください。 よろしくお願いいたします!

  • 【Excelマクロ】 文字列から日付型へ変換したい

    AccessデータをExcelへ貼り付ける際、Access側の書式設定がyyyy/mm/ddでしたらExcelでも日付型として認識してくれますが、yyyy/mm/dd(aaa)と曜日を表記したデータはセルの書式を日付型にしても文字列として貼り付けられてしまいます。 ExcelのDATEVALUE関数を使用すれば日付型へ変換できるのは存じていますが、列/行を挿入することができません。 日付型へ変換できるマクロはありませんか? 変換したいセル番地は都度変動しますので、変換したいセル(複数列/行)を選択した状態からマクロを実行したいです。

  • VBA 今日の日付に+1した場合、月末失敗する

    VBA初心者の私ですが、いつも回答者さまに助けていただいております。 今回も質問させてください。 エクセル2002を使用しています。 今日の日付に+1をして、翌日の日付を変数に入れたいのですが、 月末の場合、失敗してしまいます。 例えば、3月31日に+1をすると、3月32日になってしまします。 Dim MMM As String, DD As String MMM = Format(Date, "MMM") DD = Day(Date) + 1 DDが文字列なので当然だと思い、変数宣言を日付型にするとエラーになります。 Dim MMM As Date, DD As Date MMM = Format(Date, "MMM") DD = Day(Date) + 1 実行時エラー‘13’ 型が一致しません。 この時、MMMの値は 0:00:00 です。 日付型にすれば月末を認識して4月1日になってくれると思ったのですが・・・。 私の書き方が悪いのでしょうか? 他に書き方がありましたら教えてください。 どうぞよろしくお願いします。

  • Excel VBA で日付を4ケタの数値に変換させるには?

    ある日付データを 『月』と『日付』のみの4ケタの"文字列"にさせて表示処理させたいのですが、困っております。 現在、VBAを使用しないで処理させると…こんな感じで困っています。 1.日付を yyyy/mm/dd 表示 2.編集~ 『/』のみを全て『0』に変換 3.RIGHT関数で4ケタ(または5ケタ)抜き取る *データ* 日付    yyyy/mm/dd  変換      RIGHT(4ケタ) 1月5日  2005/1/5     20050105   0105 1月10日  2005/1/10    200501010   0110  ・    ・  ・    ・ ▲不具合状況 1."1月10日" のように日付が2ケタになる日は "1010" のように表示がずれる。RIGHT(○,5) で対処する方法もあるが…効率があまり良くない。 2."yyyy/mm/dd" のデータを直で "RIGHT( )" で処理させると思ったとおりの値が戻ってこない。 yyyy/mm/dd      RIGHT() 2005/1/5    →   8537 …変な値が戻ってくる? VBAで一気にやる方法ありますでしょうか? お知恵を拝借ください!

専門家に質問してみよう