のために働いて働いていないと、私は次のことをやった:Javaの日付の解析は、月
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class test {
public static void main(String[] args) {
Date date = new Date();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-DD");
String accessioned = "2017-04-27";
System.out.println(date);
try {
date = format.parse(accessioned);
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println(date);
Date now = new Date();
long diff = now.getTime() - date.getTime();
System.out.println(diff);
if ((diff/(1000 * 60 * 60 * 24)) >= 30) {
System.out.println("haha");
}
}
}
これは、出力Iが得る:問題
Fri Jul 21 14:23:59 CEST 2017
Fri Jan 27 00:00:00 CET 2017
15168239705
haha
例えば、 "2017-04-28"にアクセスした文字列を変更した場合は、それに応じて日付が変わりますが、同じことは年になりますが、私が月に入れた値は何でも、常に1月を出力します。たとえば私のコードでは4月になるはずだが、出力には1月が表示される
何が間違っているの?
[ 'SimpleDateFormat'のjavadoc](https://docs.oracle.com/javase/をチェック7/docs/api/java/text/SimpleDateFormat.html):大文字の「D」は**日の年**ですが、必要なのは**月の日です**、小文字の「d」で表されます –
あなたは尋ねる前にどれくらい検索しましたか?正当な答えがいくつか出てきているようですが、もちろん、あなたの検索エンジンであなたの答えがさらに速くなっているかもしれないと思っています。これに似た質問と回答がたくさんあります。 –
他にも役立ちます:[05/05/1999と5/5/1999などを受け入れる日付時刻の解析](https://stackoverflow.com/questions/227608/date-time-parsing-that-accepts-05-05 -1999-and-5-5-1999-etc)。 –