TextViewにログを出そうとしている。
日付はいらないのだが、ミリ秒までの表示はいる。
ネットで検索していて、こういうのを使っていた。
long currentTimeMillis = System.currentTimeMillis();
Date date = new Date(currentTimeMillis);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm:ss SSS");
return simpleDateFormat.format(date);
これはこれで動いていて気にしなかったのだが、Android Studioでgitのcommitをしようとしたら警告が出てきた。
そうか、Android Studioはなにかチェックしてからcommitしてくれるんだ。。。
長いよ。
なんか、ロケールを考慮するんだったらちゃんとやれ、みたいなことを言っているようだ。
検索すると、こちらが出てきた。
Y.A.M の 雑記帳: SimpleDateFormat ではなく android.text.format.DateFormat を使おう
まあ、そんなに難しくなく置き換えられそうだ。
return (String) DateFormat.format("HH:mm:ss SSS", Calendar.getInstance());
ただ気になったのが、format()がイタリック体で表示されていることだ。
ほぼAndroid Studioのデフォルトで使っているのだが、どういう意味だろう?
そういえばgetInstance()もイタリックだから、クラスメソッドという意味だろう、きっと。
で、これを使うと・・・ミリ秒のつもりが"SSS"とそのまま出力された。。
でも、format()→SimpleDateFormatとたどると、ミリ秒はやはり"S"だ。
Examplesもそうなっているので、文字列コピーして使ってみたが、やっぱり"SSS"。
musyamusya: 【Android】日時の取得でミリ秒までとりたい時【メモ】
やはり、"SSS"になってしまうらしい。
理由はわからんが、最初の書き方にロケールを書くしかないか。
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm:ss SSS",
Locale.getDefault());
return simpleDateFormat.format(new Date());
すっきりせんが、仕方ない。
さて、これでだいたい終わりなのだが、DateFormatとは関係なくもうちょっと気になることがある。
こちらがformat()の説明なのだが、戻り値がCharSequence型だ。
第1引数も戻り値もCharSequence型。
引数には"HH:mm"など書いているので、String型になっていると思うのだけど、特に怒られない。
だが、String型のreturnを直接format()にすると、これはキャストしろと怒られるのだ。
CharSequenceはなんだろう?
何かと思ったら、CharSequenceはjava.lang.CharSequenceというinterfaceとのこと。
まあ、ダウンキャストを自動でされると、ちょっと気持ち悪いしね。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。