1

私は2つの文字列を持っています

  • 2012-06-25 15:02:22.948
  • +0530

最初の文字列の時刻に5:30を追加する新しい文字列が必要です。

両方の文字列を日付オブジェクトに変換してから追加することで、これを実行できると思いました。しかし、私が使用するときのように、私はそれを行う方法を知りません

yyyy MM dd hh:mm:ssを最初の文字列の日付形式として使用すると、エラーが発生します。

ありがとう!

4

5 に答える 5

3

文字列の形式はそうで2012-06-25 15:02:22.948はないyyyy MM dd hh:mm:ssので、「エラー」が発生するのは当然です(エラーは何ですか?具体的であればあるほど、より良い人々があなたを助けることができます!)。

試してみてくださいyyyy-MM-dd HH:mm:ss.SSS。フォーマット文字列の正確な構文を理解するには、のAPIドキュメントをSimpleDateFormat参照してください。

注:フォーマット文字列では、大文字と小文字が重要です。hh12時間制をHH意味し、24時間制を意味します。を使用すると、時間のhh解析15は機能しません。SSSまた、フォーマット文字列にミリ秒を含めませんでした。

于 2012-07-04T07:52:42.250 に答える
2

文字列String1+string2の両方をマージし、formatを使用yyyy-MM-dd HH:mm:ss.SSSZして日付を解析できます。あなたはここでより多くの文書を見ることができます

于 2012-07-04T08:03:41.793 に答える
0

日付形式の文字列が間違っているため、例外が発生します。フォームに日付文字列を入力します

"yyyy-MM-dd hh:mm:ss.S"

SimpleDateFormatjavadocを参照してください

于 2012-07-04T07:53:06.920 に答える
0

これを試して:

    DateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");
    Date date = format.parse("2012-06-25 15:02:22.948");
    Calendar calendar = new GregorianCalendar();
    calendar.setTimeInMillis(date.getTime());

    int time = Integer.parseInt("0530");
    int hour = time / 100;
    int minute = time % 100;

    calendar.add(Calendar.HOUR_OF_DAY, hour);
    calendar.add(Calendar.MINUTE, minute);

    String newDateInString = format.format(calendar.getTime());
于 2012-07-04T08:53:51.027 に答える
0

他の答えは正しいですが時代遅れです。

java.time

初期のバージョンのJavaにバンドルされていた古い日時クラス(java.util.Date/.Calendarなど)は現在、レガシーです。

これらの古いクラスは、 java.timeパッケージに取って代わられました。Oracleチュートリアルを参照してください。機能の多くは、 ThreeTenのJava 6および7にバックポートされています-バックポート、さらにThreeTenABPのAndroidに適応されています。

LocalDateTime

このLocalDateTimeクラスは、タイムゾーンのない日時を表します。最初のピースにそれらを使用します。

あなたのフォーマットは標準のISO8601フォーマットに近いです。スペースを。に置き換えるだけTです。

String input = "2012-06-25 15:02:22.948";
String inputStandardized = input.replace( " " , "T" );
LocalDateTime ldt = LocalDateTime.parse( inputStandardized );

UTCからのオフセット

もう1つは、UTCからのオフセットです。ZoneOffsetこのためにクラスを使用します。

ZoneOffset offset = ZoneOffset.of( "+0530" );

オフセットまたはタイムゾーンLocalDateTimeない場合、これはタイムライン上の実際の瞬間ではなく、考えられる瞬間についての大まかなアイデアです。次に、UTCからのオフセットを追加して、OffsetDateTimeクラスで表される実際の瞬間をマークします。

OffsetDateTime odt = OffsetDateTime.of( ldt , offset );

ゾーン化

タイムゾーンは、夏時間(DST)などの異常を処理するためのオフセットとルールです。単なるオフセットよりもタイムゾーンを使用する方がよいでしょう。

たとえば、このデータのコンテキストがインドの時間であるAsia/Kolkataことがわかっている場合は、を取得するなどのタイムゾーンを使用しZonedDateTimeます。

ZoneId zoneId = ZoneId.of( "Asia/Kolkata" );
ZonedDateTime zdt = odt.atZoneSameInstant( zoneId );
于 2016-06-29T01:55:53.067 に答える