2017-10-24 6 views
0

私はSpring Bootを使用してRESTサービスを作成しました。 RESTサービスはPaaS上で実行されています。 DBテーブルに新しい項目を作成するためのエンドポイントがあります。新しいアイテムが作成されるたびに、私が作成した日付使って、それを割り当てます。LocalDate.now()が間違った日付を返します

LocalDate currentDate = LocalDate.now(); 
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd"); 

sql = "INSERT INTO my_table (" + 
       "code, " + 
       "description, " + 
       "created_date)" + 
       "VALUES (?, ?, ?)"; 

     jdbcTemplate.update(
       sql, 
       new Object[]{ 
         code, 
         description, 
         currentDate.format(df) 
       } 
     ); 

問題は、今日10月2017年、私が見ることができる唯一の接続の24日である一方、currentDate.format(df)は、2017年10月の第17回として出てくるということです10月17日には、PaaSのJARファイルを再開したのは最後のことです。サービスが実行されている環境にSSHを入れて、dateを実行してください。それはTue Oct 24 17:54:23 UTC 2017を返します。私が間違っていることは何ですか?

+3

なぜデータベースに日付を生成しないでください(varcharの代わりに適切な日付列を使用しますか)。 – Kayaman

答えて

4

あなたは私はあなたの問題はCURRENTDATEは、あなたのプログラムの開始時に初期化され、その後、あなたがその同じ日付を保存しておくことだと思い言っているから、あなたはおそらくこの

LocalDate currentDate = LocalDate.now(); 
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd"); 
public void insert(String code, String description) { 
    sql = "INSERT INTO my_table (" + 
       "code, " + 
       "description, " + 
       "created_date)" + 
       "VALUES (?, ?, ?)"; 

     jdbcTemplate.update(
       sql, 
       new Object[]{ 
         code, 
         description, 
         currentDate.format(df) 
       } 
     ); 
} 

のようなものを持っているあなたは移動する必要がありますメソッド内の日付のインスタンス化

+0

それは本当です。ありがとうございました! – g3blv

+0

ティがあなたのために働いていれば答えを受け入れることができますか? – Mikel

+0

のおかげで、「タイムアウト」が経過するのを待っているだけです。 – g3blv

関連する問題