Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 不可剥夺的日期:“;2018年4月5日“;在爪哇_Java_Date_Exception_Unparseable - Fatal编程技术网

Java 不可剥夺的日期:“;2018年4月5日“;在爪哇

Java 不可剥夺的日期:“;2018年4月5日“;在爪哇,java,date,exception,unparseable,Java,Date,Exception,Unparseable,我只想在月、年内输出,但我遇到了一个问题。这是一个例外,日期为2018年4月5日。我已将日期存储在sqlite的Bill\u date列中,其字段的格式为“2018年4月5日”。那么,我如何才能仅获取该格式的月份和年份(2018年4月)。以下是我的代码: import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.text.SimpleDateForma

我只想在
月、年
内输出,但我遇到了一个问题。这是一个例外,日期为2018年4月5日。我已将日期存储在
sqlite
Bill\u date
列中,其字段的格式为
“2018年4月5日”
。那么,我如何才能仅获取该格式的月份和年份
(2018年4月)
。以下是我的代码:

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();
    }
}
}
它有这个错误

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

格式化程序中缺少空格,并且您还有一个额外的
-

SimpleDateFormat dateformat=new SimpleDateFormat("MMM dd, yyyy");

谢谢


此外,您的年份格式似乎也有问题。使用
yyyy
获得正确的年份格式。

格式设置程序中缺少空格,您还有一个额外的
-

SimpleDateFormat dateformat=new SimpleDateFormat("MMM dd, yyyy");

谢谢

此外,您的年份格式似乎也有问题。使用
yyy
获取正确的年份格式。

两个问题:

  • 使用大写字母Y的意思是a,与年份不同。改用
    y
    s
  • 您有一个日期字符串中不存在的格式的
    -
    。使格式有一个空格(或使数据有一个
    -
  • 使用以下命令:

    SimpleDateFormat dateformat = new SimpleDateFormat("MMM d,yyyy");
    
    两个问题:

  • 使用大写字母Y的意思是a,与年份不同。改用
    y
    s
  • 您有一个日期字符串中不存在的格式的
    -
    。使格式有一个空格(或使数据有一个
    -
  • 使用以下命令:

    SimpleDateFormat dateformat = new SimpleDateFormat("MMM d,yyyy");
    

    问自己一个问题——
    mmmdd,YYYY
    与2018年4月5日的
    。由随机外部程序生成的日期格式变化太大,Java的dateformat类无法处理。仅供参考,诸如和
    Java.text.simpleDataFormat
    之类的旧日期时间类现在已被Java 8及更高版本中内置的类所取代。请参阅。问问自己一个问题——
    MMM dd,YYYY
    如何与2018年4月5日的
    相同?除非您完全控制输入字符串,否则您的企业注定会失败。由随机外部程序生成的日期格式变化太大,Java的dateformat类无法处理。仅供参考,诸如和
    Java.text.simpleDataFormat
    之类的旧日期时间类现在已被Java 8及更高版本中内置的类所取代。看,需要空间comma@DavidConrad我注意到,在我发布之后,它似乎起了作用。理想的和学究式的,是的,把空间的格式。但似乎没有必要。需要空间comma@DavidConrad我注意到,在我发布之后,它似乎起了作用。理想的和学究式的,是的,把空间的格式。但这似乎没有必要。这是错误的一年。首府Y是“周年”,是错误的一年。首都Y是一个“周年”