2015-04-22 5 views
2

Как создать метод, который извлекает столбец данных из базы данных с разными значениями (например, 20040804142000, 20040805034000)?Получение данных из базы данных и преобразование

Значения - YYYYMMDDHHMMSS, и я полагаю, что их можно преобразовать в минуты от 12 утра. Есть ли какой-либо метод для преобразования всех данных, которые мне потребуются, и реализовать их в моем заявлении.

например. выход будет

20040805034000> 220

+0

'SimpleDateFormat' позволит вам преобразовать' значение String' в 'date' ... – MadProgrammer

+0

@Satya за то, что я пытался, я пытаюсь использовать набор кодов из того, что я нашел на этом веб-сайте для преобразования. Для поисковой части в основном я не могу показаться. – nevertoolateyet

+0

Возможный дубликат [формат даты и конвертация этой даты в JodaTime] (http://stackoverflow.com/questions/24324149/date-format-and-converting-that-date-to-jodatime) –

ответ

0

Вы можете попробовать использовать библиотеки как Joda времени для этого. Если вы хотите получить более элементарное ответ, который вы могли бы попробовать это:

public int getMinutesSinceMidnight(String s){ 
    int hour = Integer.parseInt(s.substring(8,10)); 
    int mins = Integer.parseInt(s.substring(10,12)); 
    return hour*60+mins; 
{ 
+0

Для части поиска вы можете необходимо предоставить нам более подробную информацию о базе данных. – truenite

+0

@trunite имя таблицы clockIn, имя столбца, которое я хотел бы получить, называется dateTime – nevertoolateyet

2

Java 8

Итак, начнем с How to parse/format dates with LocalDateTime? (Java 8) и DateTimeFormatter вы можете преобразовать значение String в LocalDateTime используя что-то вроде ...

String value = "20040805034000"; 
DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyyMMddHHmmss"); 
LocalDateTime ldt = LocalDateTime.parse(value, format); 
System.out.println(ldt); 

Какие выходы 2004-08-5T03:40.

Далее вы можете использовать ChronoUnit.SECONDS.between рассчитать количество секунд между два раза, но это означает, что вам нужно время, якорь, который будет полночь в вашем случае ...

LocalDateTime midnight = ldt.withHour(0).withMinute(0).withSecond(0).withNano(0); 
long seconds = ChronoUnit.SECONDS.between(midnight, ldt); 
System.out.println(seconds); 

который выводит 13200

Joda-Time

Если вы не можете использовать Java 8, используйте вместо этого Joda-Time. Так, начиная с Converting a date string to a DateTime object using Joda Time library и Java (Joda): Seconds from midnight of LocalDateTime

String value = "20040805034000"; 
DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyyMMddHHmmss"); 
LocalDateTime dt = formatter.parseLocalDateTime(value); 
System.out.println(dt); 

LocalDateTime midnight = dt.withMillisOfDay(0); 

long seconds = Seconds.secondsBetween(midnight, dt).getSeconds(); 
System.out.println(seconds); 
+0

, это верно и для Java 7 и 6 – igreen

+0

@igreen. Именно поэтому я привел пример Joda-Time :) – MadProgrammer

Смежные вопросы