проблема преобразования строки Java в дату и время - PullRequest
3 голосов
/ 14 апреля 2009

Кажется, я не вижу проблемы с примером кода ниже. По какой-то причине, кажется, игнорируют год и говорят, что даты совпадают, как видно из результатов ниже Я, должно быть, упускаю что-то простое.

01/28/2006
01/16/2007
Вт апр 01 00:00:00 PDT 2008
Вт апр 01 00:00:00 PDT 2008
сделано

import java.util.*;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;

    class ExampleProgram {
      public static void main(String[] args){
        DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
        String d1String = "01/28/2006";
        String d2String = "01/16/2007";
        System.out.println(d1String);
        System.out.println(d2String);
        Date d1=null;
        try {
            d1 = df.parse(d1String);
        } catch (ParseException e) {                
            System.out.println(e.getMessage());
        }           
        Date d2=null;
        try {
            d2 = df.parse(d2String);
        } catch (ParseException e) {                
            System.out.println(e.getMessage());
        }
        System.out.println(d1);
        System.out.println(d2);
        System.out.println("done");
      }
    }

Ответы [ 4 ]

6 голосов
/ 14 апреля 2009
"dd/MM/yyyy"

следует читать:

"MM/dd/yyyy"
2 голосов
/ 14 апреля 2009

как упоминал Питер, значение букв можно найти в документации здесь: http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html

1 голос
/ 14 апреля 2009

Причина, по которой Питер не дал вам того, чего вы ожидали, состоит в том, что Питер сказал, что SimpleDateFormat должно читаться как "MM/dd/yyyy"

Причина того, что результат говорит о том, что они кажутся равными, заключается в том, что в формате, который вы задали для него "dd/MM/yyyy", d1String Месяц равен 28. Это занимает 28 - 12, добавляя год, 16 - 12, добавив еще один год, и в результате получим 4 (апрель), а сейчас 2008 год. То же самое для d2String.

0 голосов
/ 14 апреля 2009

Вы можете попытаться объявить свои даты как Дата объектов.

...