为了账号安全,请及时绑定邮箱和手机立即绑定

Simpledateformat 解析字符串日期错误

Simpledateformat 解析字符串日期错误

智慧大石 2023-05-10 17:16:29
我正在尝试将数据从字符串转换为Data类,以便稍后将其与其他数据进行比较。我的数据格式:(dd-MM-yyyy例如 31-07-2019)。问题是在format.parse("string date")运行后它显示了错误的数据格式:Wed Jul 31 00:00:00 UTC 2019这是我的代码:import java.text.SimpleDateFormat;import java.text.ParseException;import java.io.ByteArrayInputStream;import java.io.File;import java.io.InputStream;import java.util.*;public class Program {    public static void main(String[] args) {        SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy");        try {            String dateString = format.format(new Date());            String dateStr = "31-07-2019";            Date date = format.parse(dateStr);            System.out.println(dateString);            System.out.println(date);        } catch (ParseException e) {            System.out.println("ParseError " + e.getMessage());        }           }}dateString(这是当前日期)解析成功。
查看完整描述

3 回答

?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

将java.timeinstead of用于java.util日期和时间以及格式化和解析。


public static void main(String args[]) throws Exception {

    // create a custom formatter for your pattern       

    DateTimeFormatter euroDtf = DateTimeFormatter.ofPattern("dd-MM-yyyy");

    // receive today's date

    LocalDate today = LocalDate.now();

    // parse a date that has the form of your pattern using your custom formatter

    LocalDate parsedDate = LocalDate.parse("31-07-2019", euroDtf);


    System.out.println("Today is " + today.format(euroDtf));

    System.out.println("Parsed date is " + parsedDate.format(euroDtf));

}


查看完整回答
反对 回复 2023-05-10
?
HUX布斯

TA贡献1876条经验 获得超6个赞

我会说SimpleDateFormat是遗留的,使用 jdk-8LocalDate


DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy");

LocalDate date1 = LocalDate.parse("31-07-2019",formatter);

LocalDate date2 = LocalDate.now();

你也可以使用isBefore, isAfter进行比较


date1.isAfter(date2);

date2.isBefore(date2);

默认情况下以格式LocalDate返回日期ISO-8601


ISO-8601 日历系统中没有时区的日期,例如 2007-12-03。


比较后,您可以LocalDate使用相同的格式化程序将其格式化为字符串


String date2 = LocalDate.now().format(formatter);

SimpleDateFormat.parse返回java.util.Date对象


public Date parse(String source) throws ParseException

并Date.toString()代表模式的字符串


public String toString()


 Converts this Date object to a String of the form:


     dow mon dd hh:mm:ss zzz yyyy


查看完整回答
反对 回复 2023-05-10
?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

这是预期的行为

Date 类代表一个特定的时间点,精度为毫秒。

format() 将以“格式”生成日期的字符串表示形式。parse() 将返回一个日期对象,该对象始终采用“Fri Aug 02 16:14:21 SGT 2019”格式。

这里需要注意的是,构造函数中提供的模式应该与使用 parse 方法解析的日期格式相同。


查看完整回答
反对 回复 2023-05-10
  • 3 回答
  • 0 关注
  • 209 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信