猿问

Simpledateformat 解析字符串日期错误

我正在尝试将数据从字符串转换为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(这是当前日期)解析成功。


智慧大石
浏览 219回答 3
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));}

HUX布斯

我会说SimpleDateFormat是遗留的,使用 jdk-8LocalDateDateTimeFormatter 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-8601ISO-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

一只斗牛犬

这是预期的行为Date 类代表一个特定的时间点,精度为毫秒。format() 将以“格式”生成日期的字符串表示形式。parse() 将返回一个日期对象,该对象始终采用“Fri Aug 02 16:14:21 SGT 2019”格式。这里需要注意的是,构造函数中提供的模式应该与使用 parse 方法解析的日期格式相同。
随时随地看视频慕课网APP

相关分类

Java
我要回答