2012-05-11 2 views
14

Я делаю программу, которая хранит настоящее время и дату в "yyyy-MM-dd'T'HH:mm:ss.SSSZ" в этом формате. и я храню его в базе данных как строку. когда я собираю данные, мне нужны отдельные значения, такие как день, год, минус, секунды и т. д. Как я могу это сделать?Как получить день, год, часы, минуты Индивидуально от формата даты "yyyy-MM-dd'T'HH: mm: ss.SSSZ"?

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); 
String now = formatter.format(new Date()); 

Спасибо,

+0

В чем проблема, вы используете подходящий класс –

+0

Как вы собираете данные через базу данных или код Java? – pawelzieba

+0

Ваш вопрос непонятен ... вы хотите, чтобы они были введены пользователем отдельно или вы хотите отделить их от базы данных? – Barak

ответ

12

Я предлагаю вам хранить раз в БД, как «timeInMillis». По моему опыту он упрощает код и позволяет сравнивать значения времени друг с другом.

Чтобы сохранить время:

Calendar calendar = Calendar.getInstance(); // current time 
long timeInMillis = calendar.getTimeInMillis(); 
mDb.saveTime (timeInMillis); // adjust this to work with your DB 

Чтобы получить время:

long timeInMillis = mDb.getTime(); 
Calendar calendar = Calendar.getInstance(); 
calendar.setTimeInMillis (timeInMillis); 
int milliSeconds = calendar.get(MILLISECOND); 
//etc 
1

Есть эти методы доступны, чтобы получить отдельные части даты

getDate() 
getMinutes() 
getHours() 
getSeconds() 
getMonth() 
getTime() 
getTimezoneOffset() 
getYear() 
+0

Этот метод устарел на уровне API 1. Как и в версии JDK версии 1.1, для замены с помощью следующего для примера: Calendar.get (Calendar.YEAR) - 1900. –

21

Просто используйте синтаксический вместо формата:

String dateFromDB = ""; 
SimpleDateFormat parser = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); 
Date yourDate = parser.parse(dateFromDB); 

А потом вы можете прочитать любое поле, которое вы хотите, используя java.util.Date & Calendar API:

Calendar calendar = Calendar.getInstance(); 
    calendar.setTime(yourDate); 
    calendar.get(Calendar.DAY_OF_MONTH); //Day of the month :) 
    calendar.get(Calendar.SECOND); //number of seconds 
//and so on 

Я надеюсь, что он соответствует вашим потребностям

+0

отображается ошибка «java.text.ParseException: Непревзойденная дата: 2012-05-11T18: 25: 55: 250GMT ' – wolverine

+0

попытайтесь разобрать его сразу после формата. => проанализировать вывод формата, чтобы узнать, исходит ли проблема из базы данных. – Estragon

+0

здесь я не пропустил дату из базы данных, я просто ввел ее вручную. – wolverine

1

можно использовать:. ИНТ час = Calendar.getInstance() получить (Calendar.HOUR_OF_DAY);

Здесь

  • Calendar.HOUR_OF_DAY дает 24-часовое время.
  • Calendar.HOUR дает вам 12-часовое время.
Смежные вопросы