Есть ли простой способ отформатировать дату? - PullRequest
3 голосов
/ 24 сентября 2010

У меня есть несколько дат в этом формате String:

String date = "Wed Sep 15 16:31:05 BST 2010";

и я хотел бы преобразовать его обратно в объект даты или календаря. Прежде чем я пойду и заново изобрету колесо, есть ли какие-нибудь простые способы сделать это, желательно в JDK?

Ответы [ 3 ]

7 голосов
/ 24 сентября 2010

Использование SimpleDateFormat

String format = "EE MMM dd HH:mm:ss zz yyyy";
SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.US);
Date result = sdf.parse(date);

В качестве альтернативы, как предлагает Джон Скит, вы можете использовать JodaTime's DateTimeFormat - шаблон должен быть таким же. Но похоже, что псевдонимы часовых поясов BDT / BST / BDST не поддерживаются должным образом JodaTime.

3 голосов
/ 24 сентября 2010

Ну, это то, для чего java.text.DateFormat (и особенно его SimpleDateFormat подкласс) - но лично я бы посоветовал вам использовать Joda Time вместо этого.

В частности, класс Joda Time DateTimeFormatter является поточно-ориентированным, в отличие от SimpleDateFormat - так что вы можете создать один экземпляр с соответствующим шаблоном и использовать его из любого потока. Кроме того, класс DateTimeFormat действует как фабрика с большим количеством предустановленных шаблонов в ISODateFormat. О, и лучше контролировать часовой пояс и т. Д. С Joda Time.

Наконец, Joda Time - просто лучший API для работы с датой и временем. Он не идеален, но на намного лучше, чем встроенная поддержка Date и Calendar в Java.

РЕДАКТИРОВАТЬ: Пытаясь разобрать вашу строку образца, у меня возникли проблемы с битом "BST" ... частично потому, что это на самом деле не полный часовой пояс (это просто DST часть часового пояса Европы / Лондона) отчасти потому, что я не могу заставить Джоду Тайм делать то, что я хочу ... похоже, в этом случае SimpleDateFormat выигрывает: (

1 голос
/ 24 сентября 2010

SimpleDateFormat

  public static void main(String[] args) {
 try {    String str_date="11-June-07";
         DateFormat formatter ; 
     Date date ; 
          formatter = new SimpleDateFormat("dd-MMM-yy");
              date = (Date)formatter.parse(str_date);    
               System.out.println("Today is " +date );
    } catch (ParseException e)
    {System.out.println("Exception :"+e);    }    

   }  

JodaTime

import org.joda.time.format.*;
import org.joda.time.*;

...    

String dateString = "2009-04-17 10:41:33";

// parse the string
DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
DateTime dateTime = formatter.parseDateTime(dateString);

// add two hours
dateTime = dateTime.plusHours(2); // easier than mucking about with Calendar and constants

System.out.println(dateTime);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...