1

我有一个包含日期的字符串,我需要将 hh:mm:ss 添加到日期中,但是当我使用 dateFormat 时,它会给我 ParseException。这是代码:

DateFormat sdff = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String startDate = "2013-09-25";
Date frmDate;
frmDate = sdff.parse(startDate);

System.out.println("from date = " + frmDate);

我得到了 abv 代码的解析异常。但是,如果我从 Date 格式中删除 hh:mm:ss 它可以正常工作,并且输出将来自 date = Wed Sep 25 00:00:00 IST 2013。但我需要像date = 2013-09-25 00:00:00这样的输出

请帮我。提前致谢。

4

6 回答 6

8

为此,您需要 2 个 SimpleDateFormat 对象。一个解析您当前的日期字符串,另一个将解析日期格式化为您想要的格式。

// This is to parse your current date string
DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String startDate = "2013-09-25";
Date frmDate = sdf.parse(startDate); // Handle the ParseException here

// This is to format the your current date to the desired format
DateFormat sdff = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String frmDateStr = sdff.format(frmDate);

编辑:-

Date没有这样的格式。您只能使用 SDF 获得它的字符串表示形式。这里是文档的摘录

一个围绕毫秒值的瘦包装器,允许 JDBC 将其识别为 SQL DATE 值。毫秒值表示自 1970 年 1 月 1 日 00:00:00.000 GMT 以来经过的毫秒数。

关于您将其插入数据库的问题,javaDate可以像这样以数据库日期格式保存。您无需进行任何格式化。只有在从数据库中取回日期时,您才能使用该to_char()方法对其进行格式化。

于 2013-09-25T05:25:50.217 回答
1

parse()用于转换String为 .Date它需要匹配格式,否则会出现异常。
format()用于将日期转换为日期/时间字符串。
根据您的要求,您需要使用以上两种方法。

    DateFormat parser = new SimpleDateFormat("yyyy-MM-dd");
    DateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    String startDate = "2013-09-25";
    Date parsedDate = parser.parse(startDate);
    String formattedDate = dateFormatter.format(parsedDate);//this will give your expected output
于 2013-09-25T05:32:44.537 回答
1
于 2018-02-12T05:04:18.160 回答
0

这是因为你的字符串是yyyy-MM-dd,但你定义的日期格式是yyyy-MM-dd hh:mm:ss。如果您将字符串 startDate 更改为yyyy-MM-dd hh:mm:ss它应该可以工作

于 2013-09-25T05:26:15.053 回答
0
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
sdf.parse(sdf.format(new Date()));

这将返回一个日期类型

于 2017-07-15T18:51:09.823 回答
0

问题是无法将'2013-09-25'日期解析为“ ”日期格式。首先,您需要将以下日期解析为其匹配模式,即.yyyy-MM-dd hh:mm:ss'yyyy-MM-dd'

一旦将其解析为正确的模式,您就可以提供您喜欢的日期模式,即'yyyy-MM-dd hh:mm:ss'.

现在您可以格式化,它会根据您Date的喜好输出日期。

SimpleDateFormat可以用来达到这个结果。

试试这个代码。

    String startDate = "2013-09-25";
    DateFormat existingPattern = new SimpleDateFormat("yyyy-MM-dd");
    DateFormat newPattern = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    Date date = existingPattern.parse(startDate);
    String formattedDate = newPattern.format(date);
    System.out.println(formattedDate); //outputs: 2013-09-25 00:00:00
于 2018-07-25T06:29:47.557 回答