スポンサーリンク
※サイト運営にサーバーは必須です※
~このサイトもエックスサーバーを使用しています~
目次
簡単な具体例
DateTime型を文字に変換する際に、書式を指定できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Date03 { class Program { static void Main(string[] args) { //年/月/日 Console.WriteLine(System.DateTime.Now.ToString("yyyy/MM/dd")); //時:分:秒 Console.WriteLine(System.DateTime.Now.ToString("hh:mm:ss")); } } } |
実行結果
2017/07/23
07:29:05
※簡単な説明
System.DateTime.Now
で現在の時刻をDateTime型で得られます。
ToStringメソッドで書式指定を行い、現在の時刻を文字列型として表示しています。
注意点
- mとMの違いに注意
月(Month)を指定する場合は大文字のMで指定します。一方で、分(minute)を指定する場合は小文字のmを使用します。
この二つを間違えるとトンチンカンなことが起きます。
うっかり、yyyy/mm/ssと指定しないように。
- 1文字だけしか指定しない場合は注意
日時の書式指定文字列には、「カスタム日時書式指定文字列」と「標準の日時書式指定文字列」の2種類があります。
もしも、日時の書式指定文字列が1文字であった場合、「カスタム日時書式指定文字列」ではなく、「標準の日時書式指定文字列」として解釈されます。
そのため、「カスタム日時書式指定文字列」のつもりで1文字だけ書式指定を行うと、予期せぬ結果や、エラーが起きます。
カスタム日時書式指定子を1つしか使わない場合は先頭に%を付けることで回避できます。
カスタム日時書式指定文字列
カスタム日時書式指定文字列は以下のような書式指定子の組み合わせから成ります。
書式指定子 | 意味 |
yyyy(y,yy,yyy,yyyyy) | 年 |
MM(M,MMM,MMMM) | 月 |
dd(d) | 日 |
ddd(dddd) | 曜日 |
HH(H) | 時(24時間表示) |
hh(h) | 時(12時間表示) |
mm(m) | 分 |
ss(s) | 秒 |
f(F) | 秒以下を指定(fの数に応じて7桁まで指定可) |
tt(t) | 午前・午後 |
gg(g) | 年号(「西暦」と表示) |
K | タイムゾーン(日本なら+9:00) |
zzz(z,zz) | UTC(協定世界時) を基準とする時間単位のオフセット(日本なら+9:00) |
% | カスタム書式指定子として認識する |
”(“”) | 書式指定子でなく、単なる文字として認識 |
\ | 書式指定子でなく、単なる文字として認識 |
指定子の長さによって、結果は変わります。
例えば、「ss」(01~59)と「s」(1~59)は秒を指定するために使われます。
しかし、微妙に表示のされ方が変わることがあります。
5秒を表示するとき、「ss」であれば、「05」とゼロが付き、「s」であれば、「5」とゼロが省かれます。
また、上でも説明した通り、カスタム書式指定子を一文字で使用する場合は、前に「%」をつける必要があります。
なぜなら、1文字の場合、「カスタム日時書式指定文字列」でなく、「標準の日時書式指定文字列」として解釈されるからです。
ソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Date04 { class Program { static void Main(string[] args) { Console.WriteLine(System.DateTime.Now); Console.WriteLine(System.DateTime.Now.ToString("yyyy/MM/dd")); Console.WriteLine(System.DateTime.Now.ToString("yy/M/d")); Console.WriteLine(System.DateTime.Now.ToString("%y")); Console.WriteLine(System.DateTime.Now.ToString("yy")); Console.WriteLine(System.DateTime.Now.ToString("yyy")); Console.WriteLine(System.DateTime.Now.ToString("yyyy")); Console.WriteLine(System.DateTime.Now.ToString("yyyyy")); Console.WriteLine(System.DateTime.Now.ToString("%M")); Console.WriteLine(System.DateTime.Now.ToString("MM")); Console.WriteLine(System.DateTime.Now.ToString("MMM")); Console.WriteLine(System.DateTime.Now.ToString("MMMM")); Console.WriteLine(System.DateTime.Now.ToString("%d")); Console.WriteLine(System.DateTime.Now.ToString("dd")); Console.WriteLine(System.DateTime.Now.ToString("ddd")); Console.WriteLine(System.DateTime.Now.ToString("dddd")); Console.WriteLine(System.DateTime.Now.ToString("yyyy/MM(MMM)/dd(ddd)")); Console.WriteLine(System.DateTime.Now.ToString("yyyy/MM(MMMM)/dd(dddd)")); Console.WriteLine(System.DateTime.Now.ToString("%H")); Console.WriteLine(System.DateTime.Now.ToString("HH")); Console.WriteLine(System.DateTime.Now.ToString("(t)h")); Console.WriteLine(System.DateTime.Now.ToString("(tt)hh")); Console.WriteLine(System.DateTime.Now.ToString("mm:ss")); Console.WriteLine(System.DateTime.Now.ToString("m:s")); Console.WriteLine(System.DateTime.Now.ToString("tt_h_m_s")); Console.WriteLine(System.DateTime.Now.ToString("hh:mm:ss")); Console.WriteLine(System.DateTime.Now.ToString("hh:mm:ss.f")); Console.WriteLine(System.DateTime.Now.ToString("hh:mm:ss.F")); Console.WriteLine(System.DateTime.Now.ToString("hh:mm:ss.fffffff")); Console.WriteLine(System.DateTime.Now.ToString("hh:mm:ss.FFFFFFF")); System.Threading.Thread.Sleep(100);//100ミリ秒待つ Console.WriteLine(System.DateTime.Now.ToString("hh:mm:ss.f")); Console.WriteLine(System.DateTime.Now.ToString("hh:mm:ss.F"));//点が不要な場合は点もきちんと消える Console.WriteLine(System.DateTime.Now.ToString("hh:mm:ss.fffffff")); Console.WriteLine(System.DateTime.Now.ToString("hh:mm:ss.FFFFFFF")); Console.WriteLine(System.DateTime.Now.ToString("%g")); Console.WriteLine(System.DateTime.Now.ToString("gg")); Console.WriteLine(System.DateTime.Now.ToString("%K")); Console.WriteLine(System.DateTime.Now.ToString("%z")); Console.WriteLine(System.DateTime.Now.ToString("zz")); Console.WriteLine(System.DateTime.Now.ToString("zzz")); //System.FormatException: 入力文字列の形式が正しくありません。(以下のコードはエラー) //Console.WriteLine(System.DateTime.Now.ToString("h")); //なぜなら「標準の日時書式指定文字列」として解釈されるから。「標準の日時書式指定文字列」の書式指定子にhはない Console.WriteLine(System.DateTime.Now.ToString("%h")); Console.WriteLine(System.DateTime.Now.ToString(" h"));//空白などがあれば1文字とカウントされない Console.WriteLine(System.DateTime.Now.ToString("hh")); Console.WriteLine(System.DateTime.Now.ToString("'hh'"));//""の中に''は可能だが""の中に""は無理 Console.WriteLine(System.DateTime.Now.ToString("時間" + "hh")); Console.WriteLine(System.DateTime.Now.ToString("時間hh")); //\は2つで「\」と認識する(エスケープシーケンス) Console.WriteLine(System.DateTime.Now.ToString("m\\m(s\\s)")); //@を付けて、逐語的リテラル文字列として扱えば\は1つで済む Console.WriteLine(System.DateTime.Now.ToString(@"m\m(s\s)")); } } } |
実行結果
2017/07/23 20:31:05
2017/07/23
17/7/23
17
17
2017
2017
02017
7
07
7
7月
23
23
日
日曜日
2017/07(7)/23(日)
2017/07(7月)/23(日曜日)
20
20
(午)8
(午後)08
31:05
31:5
午後_8_31_5
08:31:05
08:31:05.6
08:31:05.6
08:31:05.6100481
08:31:05.6100481
08:31:05.7
08:31:05.7
08:31:05.7120862
08:31:05.7120862
西暦
西暦
+09:00
+9
+09
+09:00
8
8
08
hh
時間08
時間08
31m(5s)
31m(5s)
標準の日時書式指定文字列
標準の日時書式指定文字列は以下の書式指定子を使って指定します。
書式指定子 | 意味 | 対応するカスタム書式指定子 |
d | 年/月/日 | yyyy/MM/dd |
D | ****年*月*日 | yyyy’年’M’月’d’日’ |
t | 時:分 | H:mm |
T | 時:分:秒 | H:mm:ss |
g | 年/月/日 時:分 | yyyy/MM/dd H:mm |
G | 年/月/日 時:分:秒 | yyyy/MM/dd H:mm:ss |
f | ****年*月*日 時:分 | yyyy’年’M’月’d’日’ H:mm |
F | ****年*月*日 時:分:秒 | yyyy’年’M’月’d’日’ H:mm:ss |
y(Y) | ****年*月 | yyyy’年’M’月’ |
m(M) | *月*日 | M月d日 |
r(R) | 曜日, 日 月 年 時:分:秒 GMT | ddd, dd MMM yyyy HH’:’mm’:’ss ‘GMT’ |
s | 年-月-日T時:分:秒 | yyyy’-‘MM’-‘dd’T’HH’:’mm’:’ss |
u | 年-月-日 時:分:秒Z | yyyy’-‘MM’-‘dd HH’:’mm’:’ss’Z’ |
U | ****年*月*日 時:分:秒(協定世界時) | yyyy’年’M’月’d’日’ H:mm:ss |
o(O) | 年-月-日T時:分:秒.(小数点)±協定世界時との差 | yyyy’-‘MM’-‘dd’T’HH’:’mm’:’ss’.’fffffffK (yyyy’-‘MM’-‘dd’T’HH’:’mm’:’ss’.’fffffffzzz) |
国によって、対応するカスタム書式指定子は異なる可能性があります。
例えば、日本では、書式指定子「d」は、年/月/日の順番で表示されます。
一方、英語圏の一部では、日/月/年や月/日/年の順番だったりします。
ソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Globalization;//追加 namespace Date05 { class Program { static void Main(string[] args) { DateTimeFormatInfo dtfi = CultureInfo.CreateSpecificCulture("ja-jp").DateTimeFormat; Console.WriteLine(dtfi.ShortDatePattern);//d Console.WriteLine(System.DateTime.Now.ToString("d")); Console.WriteLine(dtfi.LongDatePattern);//D Console.WriteLine(System.DateTime.Now.ToString("D")); Console.WriteLine(dtfi.ShortTimePattern);//t Console.WriteLine(System.DateTime.Now.ToString("t")); Console.WriteLine(dtfi.LongTimePattern);//T Console.WriteLine(System.DateTime.Now.ToString("T")); Console.WriteLine(dtfi.ShortDatePattern + " " + dtfi.ShortTimePattern);//g Console.WriteLine(System.DateTime.Now.ToString("g")); Console.WriteLine(dtfi.ShortDatePattern + " " + dtfi.LongTimePattern);//G Console.WriteLine(System.DateTime.Now.ToString("G")); Console.WriteLine(dtfi.LongDatePattern + " " + dtfi.ShortTimePattern);//f Console.WriteLine(System.DateTime.Now.ToString("f")); Console.WriteLine(dtfi.FullDateTimePattern);//F Console.WriteLine(System.DateTime.Now.ToString("F")); Console.WriteLine(dtfi.YearMonthPattern);//y,Y Console.WriteLine(System.DateTime.Now.ToString("y")); Console.WriteLine(System.DateTime.Now.ToString("Y")); Console.WriteLine(dtfi.MonthDayPattern);//M,m Console.WriteLine(System.DateTime.Now.ToString("m")); Console.WriteLine(System.DateTime.Now.ToString("M")); Console.WriteLine(dtfi.RFC1123Pattern);//R,r Console.WriteLine(System.DateTime.Now.ToString("r")); Console.WriteLine(System.DateTime.Now.ToString("R")); Console.WriteLine(dtfi.SortableDateTimePattern);//s Console.WriteLine(System.DateTime.Now.ToString("s")); Console.WriteLine(dtfi.UniversalSortableDateTimePattern);//u Console.WriteLine(System.DateTime.Now.ToString("u")); Console.WriteLine(dtfi.FullDateTimePattern);//U//自動的にUTCに変換 Console.WriteLine(System.DateTime.Now.ToString("U")); Console.WriteLine("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK"); Console.WriteLine(System.DateTime.Now.ToString("o")); Console.WriteLine(System.DateTime.Now.ToString("O")); Console.WriteLine(System.DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss.fffffffK")); Console.WriteLine(System.DateTime.Now.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK")); Console.WriteLine(System.DateTime.Now.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffzzz")); } } } |
実行結果
yyyy/MM/dd
2017/07/23
yyyy’年’M’月’d’日’
2017年7月23日
H:mm
20:33
H:mm:ss
20:33:19
yyyy/MM/dd H:mm
2017/07/23 20:33
yyyy/MM/dd H:mm:ss
2017/07/23 20:33:19
yyyy’年’M’月’d’日’ H:mm
2017年7月23日 20:33
yyyy’年’M’月’d’日’ H:mm:ss
2017年7月23日 20:33:19
yyyy’年’M’月’
2017年7月
2017年7月
M月d日
7月23日
7月23日
ddd, dd MMM yyyy HH’:’mm’:’ss ‘GMT’
Sun, 23 Jul 2017 20:33:19 GMT
Sun, 23 Jul 2017 20:33:19 GMT
yyyy’-‘MM’-‘dd’T’HH’:’mm’:’ss
2017-07-23T20:33:19
yyyy’-‘MM’-‘dd HH’:’mm’:’ss’Z’
2017-07-23 20:33:19Z
yyyy’年’M’月’d’日’ H:mm:ss
2017年7月23日 11:33:19
yyyy’-‘MM’-‘dd’T’HH’:’mm’:’ss’.’fffffffK
2017-07-23T20:33:19.5022747+09:00
2017-07-23T20:33:19.5052586+09:00
2017-07-23T20:33:19.5062598+09:00
2017-07-23T20:33:19.5062598+09:00
2017-07-23T20:33:19.5072646+09:00
関連記事
~プログラミングを勉強してみませんか?~
TechAcademy [テックアカデミー] は無料の体験講座が用意されているので、気軽に体験できます。
※私(サイト主)も無料体験講座を実際に受けてみました(→感想)