无法解释的日期:Java中的"2018年4月5日"

md *_*zaz 1 java date exception unparseable

我只想要Month,Year明智的输出,但我遇到了问题.这是一个ExceptionUnparseable date: "Apr 5, 2018".我已将日期存储在Bill_DateColumn中sqlite,并且其格式"Apr 5, 2018"在其字段中.那么我怎样才能只获得该格式的月份和年份(Apr, 2018).这是我的代码如下:

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Locale;

public class Demo2 {
    private static Connection con;
    private static String query;
    private static PreparedStatement PStat,PStat2;
    private static ResultSet res,res2;
    private static String Bill_Date;
public static void main(String args[])
{
    try
    {
        con=Database.Database();
        query="select Bill_Date from DailySales where Bill_Date='Apr 5, 2018'";
        PStat=con.prepareStatement(query);
        res=PStat.executeQuery();
        while(res.next())
        {
        Bill_Date=res.getString("Bill_Date");
        }
        SimpleDateFormat month=new SimpleDateFormat("MMMM,yyyy",Locale.ENGLISH);
        SimpleDateFormat dateformat=new SimpleDateFormat("MMM-dd,YYYY");
        Date date=dateformat.parse(Bill_Date);
        String MONTH=month.format(date);
        System.out.println(MONTH);
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
}
}
Run Code Online (Sandbox Code Playgroud)

它有这个错误.

java.text.ParseException: Unparseable date: "Apr 5, 2018"
    at java.text.DateFormat.parse(Unknown Source)
    at Demo2.main(Demo2.java:34)
Run Code Online (Sandbox Code Playgroud)

rge*_*man 6

两个问题:

  1. 使用资本Y意味着所谓的"周年",这与年份不同.用ys代替.
  2. 您有一个-日期字符串中不存在的格式.使格式有空格(或使数据具有空格-).

用这个:

SimpleDateFormat dateformat = new SimpleDateFormat("MMM d,yyyy");
Run Code Online (Sandbox Code Playgroud)