2016-09-28 4 views
0

을에서 날짜와 시간을 읽어 두 위젯 :SWT 날짜 시간 - 상상이 위젯

DateTime dtDate = new DateTime(parent, SWT.BORDER); 

는 는
DateTime dtTime = new DateTime(parent, SWT.BORDER | SWT.TIME); 
는 는

겠습니까는에 두 개의 위젯에서 날짜와 시간을 읽을 수있는 가장 효율적인 방법이 될 것입니다 단일 날짜 변수?

: 다음과 같은 솔루션은 우아하지 않습니다. 이 작업을 수행하는 더 좋은 방법이 있기를 바랍니다.

final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
// year 
dateString += String.valueOf(dtDate .getYear()); 
dateString += "-"; 
// month 
dateString += String.valueOf(dtDate .getMonth()); 
dateString += "-"; 

// day 
dateString += String.valueOf(dtDate .getDay()); 
dateString += " "; 

// hour 
dateString += String.valueOf(dtTime.getHours()); 
dateString += ":"; 

// minute 
dateString += String.valueOf(dtTime.getMinutes()); 
dateString += ":"; 

// second 
dateString += String.valueOf(dtTime.getSeconds()); 

try { 
    Date startDate = (Date) dateFormat.parse(dateString); 
    } catch (ParseException exception) { 
    exception.printStackTrace(); 
    } 

답변

1

JFace는 데이터 바인딩을 사용 Calendar :

Calendar cal = Calendar.getInstance(); 
cal.clear(); 

cal.set(Calendar.YEAR, dtDate.getYear()); 
cal.set(Calendar.MONTH, dtDate.getMonth()); 
cal.set(Calendar.DAY_OF_MONTH, dtDate.getDay()); 

cal.set(Calendar.HOUR_OF_DAY, dtTime.getHours()); 
cal.set(Calendar.MINUTE, dtTime.getMinutes()); 
cal.set(Calendar.SECOND, dtTime.getSeconds()); 

Date date = cal.getTime(); 

당신이 날짜 + 시간을 나타내는 정확히 무엇에 따라 LocalDateTime 또는 ZonedDateTime처럼 사용하여 사물을 볼 수도 있습니다 자바 (8) 사용하는 경우.

+0

Java 8 이상에 내장 된 java.time 기능의 대부분은 [ThreeTen-Backport] (http://www.threeten.org/threetenbp/)의 Java 6 및 7로 다시 포팅되며 [ [ThreeTenABP] (https://github.com/JakeWharton/ThreeTenABP)에서 [Android *] (https://en.wikipedia.org/wiki/Android_ (operating_system)) ([* 사용 방법 * //stackoverflow.com/q/38922754/642706)). –