Я хочу прочитать дату в формате ГГГГ-ММ-ДД.
Но если я введу дату, скажем, например, 2008-1-1, я хочу прочитать ее как 2008-01-01.
Кто-нибудь может мне помочь? заранее спасибо




Решение Adeel подойдет, если вам нужно использовать встроенную обработку даты / времени Java, но лично я бы предпочел использовать Джода Тайм. Когда дело доходит до форматов, основным преимуществом Joda Time является то, что средство форматирования не имеет состояния, поэтому вы можете безопасно делиться им между потоками. Образец кода:
DateTimeFormatter parser = DateTimeFormat.forPattern("YYYY-M-D");
DateTimeFormatter formatter = DateTimeFormat.forPattern("YYYY-MM-DD");
DateTime dt = parser.parseDateTime("2008-1-1");
String formatted = formatter.print(dt); // "2008-01-01"
Или используйте гораздо лучшую библиотеку Джода Тайм.
DateTime dt = new DateTime();
System.out.println(dt.toString("yyyy-MM-dd"));
// The ISO standard format for date is 'yyyy-MM-dd'
DateTimeFormatter formatter = ISODateTimeFormat.date();
System.out.println(dt.toString(formatter));
System.out.println(formatter.print(dt));
API даты и календаря ужасен.
import java.text.*;
public class Test
{
public static void main(String args[])
{
try
{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-DD");
System.out.println(sdf.parse(args[0]).toString());
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
Это работает нормально, независимо от того, пишете ли вы в качестве аргумента «2008-1-1» или «2008-01-01».
Просто нужно быть осторожным с проблемами потоковой передачи с этим! У меня были самые странные ошибки, возникающие при использовании SimpleDateFormat