- PR -

日付の型変換

1
投稿者投稿内容
moko
常連さん
会議室デビュー日: 2003/08/22
投稿数: 25
投稿日時: 2003-10-08 09:27
現在、.NET2002でC#を使っているのですがDB(SQLサーバー)上で20030910と入ってる日付データ(String型)を、2003910として表示させたいのですがどうしたら良いでしょうか?
現在、実行してもString型をint型に変換できませんとエラーが出てしまいます。
お手数ですが、ソースを書いていただけるとありがたいです。
よろしくお願いします。
小野@どっとねっとふぁん
ぬし
会議室デビュー日: 2001/10/30
投稿数: 402
投稿日時: 2003-10-08 09:47
string str = "20030910";
int i = System.Int32.Parse(str);

こういうことでしょうか。。。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2003-10-08 10:09
kudanさんこんにちは
入っているデータが年4桁、月2桁、日2桁と保障されているのなら
str.Substring(0,4) + int.Parse(str.Substring(4,2)).ToString()
+ int.Parse(str.Substring(6,2)).ToString();
でもいけると思いますが(もっといいコードはあると思いますが・・)、
どのようなソースでエラーがでてるんですか?

SQLサーバでDateTime型で入っていたら楽なのですが最初からStringなのですよね?・・
またはStringでも"2003/09/10"であったらすぐDateTimeに変換できますし。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-10-08 10:58
引用:

kudanさんの書き込み (2003-10-08 09:27) より:

現在、.NET2002でC#を使っているのですがDB(SQLサーバー)上で20030910と入ってる日付データ(String型)を、2003910として表示させたいのですがどうしたら良いでしょうか?


DateTime.ParseExact("20030910", "yyyyMMdd", New System.Globalization.CultureInfo("ja-JP")).ToString("yyyyMd")

VB.NETですので、適切に変換してください。

"200030910"を、西暦4桁、月0先行2桁、日0先行2桁でDateTime型に解釈。このとき、文字列の解釈に「日本-日本語」のルールを使う。できたDateTime型を、西暦4桁、月1〜2桁、日1〜2桁の文字列に変換。

####
↓なちゃさん

DateTime.ParseExact(usFmt, "dd-MMM-yyyy", _
New System.Globalization.CultureInfo("en-US"))
ってやっているところがあったから、コピってきたのよぉ〜(笑)

[ メッセージ編集済み 編集者: Jitta 編集日時 2003-10-08 17:03 ]
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2003-10-08 14:02
引用:

DateTime.ParseExact("20030910", "yyyyMMdd", New System.Globalization.CultureInfo("ja-JP")).ToString("yyyyMd")

"200030910"を、西暦4桁、月0先行2桁、日0先行2桁でDateTime型に解釈。このとき、文字列の解釈に「日本-日本語」のルールを使う。


なんとなく、
System.Globalization.CultureInfo.InvariantCulture
を指定する方が、自然な気がしないでもないです。
# 「日本-日本語」という解釈に特に意味がないため…
moko
常連さん
会議室デビュー日: 2003/08/22
投稿数: 25
投稿日時: 2003-10-10 14:03
みなさん、回答のほどありがとうございました。
きちんと、表示させることができたので本当に良かったです。
1

スキルアップ/キャリアアップ(JOB@IT)