タグ

日付時刻とJavaに関するteracy_junkのブックマーク (16)

  • Javaバージョン別の改元(新元号)対応まとめ - Qiita

    はじめに 改元が2019年5月1日、新元号が「令和」と4月1日に発表されました。新元号の発表が1ヵ月前の4月1日に予定されています (4/1見直し) 関連する記事は「Javaで新元号に対応する」などがありますが、Java SE 8(以下、単にJava 8のように表記)からのDate and Time APIに対応していなかったり、それ以外のブログなどでも古い情報が多いため、改めてなるべく網羅的かつ実践的となるよう、まとめてみることにしました。 ※記事は改元対応が完了するであろう2019年5月くらいまでは随時更新する予定です。 誤りや補足などあれば適宜コメントなどでご指摘ください。 (3/24追記) 2019年3月21日(米国時間)にOracle社のブログ記事「A new (Japanese) era for Java!」(日語翻訳)が公開され、2019年4月16日(米国時間)に予定され

    Javaバージョン別の改元(新元号)対応まとめ - Qiita
  • ThreeTen-Backport error on Android - ZoneRulesException: No time-zone data files registered

  • タイムゾーン呪いの書 - Qiita

    コメント欄で「Software Design 誌 (2018/12) に寄稿した内容や修正などをこちらの記事にも適用したい」と言ったあと、やるやる詐欺でずっと放置していましたが、三年近く経ってようやく 2021年 7月に大幅に改訂し、同時に Zenn に引っ越すことにしました。 タイムゾーン呪いの書 (知識編) タイムゾーン呪いの書 (実装編) タイムゾーン呪いの書 (Java 編) なにやら長くなりすぎたので三部構成になっています。 この Qiita 版は、しばらく (最低一年は) 改訂前のまま残しておきます。 タイムゾーンの存在はほぼ全ての人が知っていると思います。ソフトウェア・エンジニアなら多くの方が、自分の得意な言語で、タイムゾーンが関わるなにかしらのコードを書いたことがあるでしょう。ですが、日に住んで日仕事をしていると国内時差もなく1 夏時間もない2 日標準時 (Japa

    タイムゾーン呪いの書 - Qiita
    teracy_junk
    teracy_junk 2018/02/07
    コメントの「北海道礼文島香深元地の一部領域においては、1970年代以降から現代にいたるまで、非公式ながらUTC+9:30が主張され、当該区域に足を踏み込む旅人は時計を修正する風習がありました」気になる
  • Java日付時刻フォーマッターメモ(Hishidama's Java8 DateTimeFormatter Memo)

    概要 [/2017-07-26] 生成 整形(format) 解析・解決(parse) [/2014-07-23] SimpleDateFormatとの違い [2014-07-23] 書式の文字 [2014-07-23] リゾルバースタイル [/2014-07-23] 解析フェーズのみの実行 [2014-07-28] 概要 日付時刻オブジェクトを文字列に整形(format)、あるいは逆に文字列から日付時刻オブジェクトを生成(parse)するにはjava.time.format.DateTimeFormatterを使う。 (従来はjava.text.SimpleDateFormatを使っていた) DateTimeFormatterは不変オブジェクトであり、スレッドセーフである。 ただし、シリアライズ可能ではない。(SimpleDateFormatはシリアライズ可能だったが)[2017-07-

  • DateTimeFormatter (ThreeTen backport 1.6.8 API)

    teracy_junk
    teracy_junk 2017/04/27
    なるほど、'012345'を' 1:23:45'とパースする場合は"ppH:mm:ss"と指定しろ、と(ofPattern(String)の項の最後の方)
  • 会計ソフトを作る上で避けては通れない和暦の話 - freee Developers Hub

    エンジニアの大橋 @_tohashi です。会計freeeで確定申告や記帳機能などの開発を担当しています。 Webに限らず、日向けのアプリケーションにおける特有の要素として和暦があります。プロダクトによっては最初から和暦を扱わずに西暦に統一してしまうという手もありますが、弊社のプロダクトのように会計や労務管理に関わるものの場合、決算書上の表記など和暦が必要とされる場面は多々あるため避けて通ることはできません。記事ではUIや実装における和暦の扱いについてご紹介したいと思います。 和暦の範囲 そもそも「和暦」とはどこからどこまでの期間を指すのでしょうか。Wikipediaによれば 和暦(われき)は、元号とそれに続く年数によって年を表現する、日独自の紀年法である。邦暦(ほうれき)とも。また「和暦」は、西暦に対する表現としても使用されることが多い。 この手法自体は東アジアで広く行われてきたが

    会計ソフトを作る上で避けては通れない和暦の話 - freee Developers Hub
    teracy_junk
    teracy_junk 2017/03/22
    やっぱりJavaつよい/『ちなみに僕は昭和64年生まれなのですが、たまにこういう悲しい目に合います』悲しい
  • 続・今日から始めるJava8 - JSR-310 Date and Time API - Taste of Tech Topics

    こんにちは id:cero-t です。 前回話題にしたJava8 ですが、もう少し別の機能を試してみましょう。 今回は新しい日時API、Date and Time API(JSR-310) を紹介します。 JDK8 M6時点でのJavadocは、以下のURLで公開されています。 http://cr.openjdk.java.net/~rriggs/threeten/threeten-javadoc-b75/ 注意:このエントリーの内容は、JDK8 M6 (b75) の時点のAPIに従っています。 M7以降では一部のAPIが変わっているので注意してください。GA時点でまた記事を見直します。 From Joda Time to Three Ten Javaの日付クラス(java.util.Date)の扱いは、 皆さんもなかなか苦慮していることだと思います。 というのも、、、 ・年月日などを指定

    続・今日から始めるJava8 - JSR-310 Date and Time API - Taste of Tech Topics
  • Javaで日時を扱う(Java7まで) - Qiita

    Java8では、日時を扱うクラス群が様変わりしてしまいました。これを機に、日時の扱いをまとめてみたいと思います。今回は、Java7までの日時、次回は、Java8での日時を書きたいと思います。 Java7までは、主に、Dateクラス、Calendarクラスを使いますね。Apache Commons LangのDateUtils、DateFormatUtilsも使えると便利。 Apache Commons Lang について https://commons.apache.org/proper/commons-lang/ バージョン3.2では、Java6以上が必要。 バージョン3.0では、Java5以上が必要。 バージョン2.xは、Java1.4で使用可能。 現在/指定日時の作成 Dateクラスの現在/指定日時を作成する。 // 現在日時 Date nowDate1 = new Date();

    Javaで日時を扱う(Java7まで) - Qiita
  • Javaで日時を扱う(Java8) - Qiita

    Java8では、日時を扱うクラス群が様変わりしてしまいました。これを機に、日時の扱いをまとめてみたいと思います。前回は、Java7までの日時、今回は、Java8での日時を書きました。 Java8では、Java7までのDate,Calendarの代替として、次のクラスなどが導入されましたね。 Instant - 日時(エポック秒) LocalDateTime - タイムゾーンなし日時 ZonedDateTime - タイムゾーンあり日時 現在/指定日時の作成 Instantクラスの現在/指定日時を作成する。 // 現在日時 Instant nowInstant = Instant.now(); // long→Instant Instant instant2 = Instant.ofEpochMilli(msec1); // LocalDateTime→Instant Instant ins

    Javaで日時を扱う(Java8) - Qiita
  • Java8の日付および時刻処理(Date/Time API(JSR-310))の紹介と利用指針

    Java8のリリースが近づいています。Java8と言うとラムダ式のほうが有名ですが、多くの人がブログに書きそうなので、地味なDate/Time API(JSR-310)のほうを説明します。 ひとつだけラムダ式について言及しておくと、「ラムダ式は(関数型インターフェースの)オブジェクトを生成する」と説明している文章があったら、その文章は怪しいので疑いの目で読んでください。実際にはラムダ式はオブジェクト生成のコードにはならないからです(InvokeDynamicの呼び出しコードになります)。 後日つっこみを受けました。詳しくは別記事を参照してください。 さて、Date/Time API(JSR-310)の話です。 Javaの新しい日時処理(日付処理および時刻処理)のAPIです。結構、複雑です。過剰設計という批判もあるようです。自分自身、まだそこまでの判断はできません。自分が言えるのは、日時処理

  • Android: 現在時刻を固定するテストとTestRule

    Fixed current time. 時間に依存したAPIの振る舞いをテストする場合, 現在時刻を固定すればテストをRepeatableに保てます. 現在時刻を固定する次の2通りの方法を実装しました. java.timeを使った方法(Java8以降) java.utilを使った方法(Java7以前) テストの際に現在時刻を固定化する下準備として, 現在時刻を返すAPIをラップしたメソッドを用意します. public static long now() { return <現在時刻を返すAPI> } テストの際には固定時刻を返すように振る舞いを変更してやれば, このAPIに依存しているモジュールからするとあたかも現在時刻が固定化されているように見えます. 目的達成のためには, now()メソッドが常にダミーのepoch timeを返すように振る舞いを差し替える仕組みを用意する必要があります

  • Java8のDate and Time API - LocalDateTimeとZonedDateTimeの相互変換 - mike-neckのブログ

    こんにちわ、みけです。 ここ最近さわってるJava8 Date and Time APIですが、 今日はLocalDateTimeとZonedDateTimeの相互変換についてです。 LocalDateTimeとZonedDateTimeの変換 ZonedDateTimeからLocalDateTimeへはゾーン情報を取り除くだけなので、 変換の種類は#toLocalDateTimeに限られています。 逆に、LocalDateTimeからZonedDateTimeへの変換は、 新しいゾーン情報、変換前のゾーン、夏時間などの考慮するべきことがあり、 それぞれに対応するメソッドが存在しています。 @RunWith(Enclosed.class) public class DateTimeTest { private static final DateTimeFormatter withoutZo

    Java8のDate and Time API - LocalDateTimeとZonedDateTimeの相互変換 - mike-neckのブログ
  • Java8日付時刻APIの使いづらさと凄さ - きしだのHatena

    いままでのJavaでは、日付時刻を扱おうとするとめんどくさい割に非常に低機能でした。 Java8では、新たに日付時刻APIが導入され、めんどくささが増しつつ非常に高機能になりました。 (以降、Java8で導入された日付時刻APIを単に「日付時刻API」と表します) もちろん、慣れてきて、ちょっとしたサポートメソッドを用意してやれば、結構使いやすいのですが、それは「このAPIは使いやすい」という評価にはなりません。 つまり日付時刻APIは、慣れないとぜんぜんわからないし、サポートメソッドがないと面倒なコードが必要ということです。 いろいろあってよくわからない 日付時刻では、時点を扱うInstantや期間を扱うPeriod、時間量をあらわすDurationなど多くのクラス・インタフェースが導入されています。 これらは、IDEの補完でAPIを探りながら機能を推測すれば、それなりにドキュメントなし

    Java8日付時刻APIの使いづらさと凄さ - きしだのHatena
  • java.util.Dateをjava.sql.Dateにきちんと変換する方法 - ひがやすを技術ブログ

    多くの人はこうやればいいと思っているかもしれません。 java.util.Date d = new java.util.Date(); java.sql.Date d2 = new java.sql.Date(d.getTime());確かにこれでも一応変換はできますが、きちんと変換してはいません。java.sql.DateのJavadocを見るとこう書いてあります。 SQL DATE の定義に対応させるために、java.sql.Date のインスタンスでラップされたミリ秒の値は、インスタンスが関連した特定のタイムゾーンで時間、分、秒、ミリ秒をゼロに設定することで、「標準化」する必要があります。 つまり、java.util.Date#getTime()をjava.sql.Dateにただ渡すだけでは不十分で、「特定のタイムゾーンで時間、分、秒、ミリ秒をゼロに設定しなければいけない」のです。そ

    java.util.Dateをjava.sql.Dateにきちんと変換する方法 - ひがやすを技術ブログ
  • SimpleDateFormatクラス - JFormattedTextFieldクラス - Swing

    上記で書かれている"文字"の組み合わせで指定します。それぞれの文字は何個繰り返し使うかで表示方法が異なってきます。実際の使い方とパターン毎の結果については例えば下記のようになります。 SimpleDateFormat sdf1 = new SimpleDateFormat("y.M"); System.out.println(sdf1.format(new Date())); ここで使ってるformatメソッドは親クラスのDateFormatクラスで用意されているformatメソッドを使っています。 パターン毎の結果 "y.M" 05.9 "yy.MM" 05.09 "yyy.MMM" 05.9 "yyyy.MMMM" 2005.9月 "yyyyy.MMMMM" 02005.9月 上記のように何回繰り返し指定するかで結果は変わってきます。また先ほどの一覧表の"表示"というところに書かれてい

  • 時刻の扱い方

    時刻の基 Javaの時刻の扱い方はUNIXのそれに似ています。 UNIXではグリニッジ標準時(GMT)の1970年1月1日午前0時(UNIX元年の元旦)からの秒数を int 型で数えています。 グリニッジ標準時は正式には世界時(Universal Time)と呼ばれ,天体の運行を基準に定められているので,進み方が一定ではなく,現在では原子時計に基づく協定世界時(UTC,Coordinated Universal Time)を基準にすることが一般的です。 協定世界時はときどき「うるう秒」(23時59分60秒)が入ります。 UNIXの方式は,秒単位なので粗いだけでなく,21世紀のうちに int 型(32ビット整数)の範囲をはみ出してしまいます。 Javaでは System.currentTimeMillis() というメソッドで現在の協定世界時を得ます。 起点はやはり1970年元旦0時ですが

  • 1