2014-10-29 3 views

답변

3
Date addDaysToDate(int noOfDays, Date initDate = null) { 
    // If init date provided, add date to it otherwise 
    // consider epoch (1/1/1970 GMT) as init date 
    ((initDate ?: new Date(0)) + noOfDays).clearTime() 
} 

println addDaysToDate(40000, Date.parse("MM/dd/yyyy", "1/1/1900")) 
println addDaysToDate(40000) 
+0

그리니치 (네거티브 오프셋)의 서쪽에있는 시간대에있는 경우 'addDaysToDate (N)'은 시간이 지나지 않은 'Date'를 제공합니다. 시대 날짜? 여기에 내 추론이있다. 'addDaysToDate (0)'을 고려하십시오. GMT 신기원 시작에 0을 더한 후에, 모든 음수 시간 오프셋 시간대는 달력 날짜 - 시간을 12/31/1969 자정 이전에 잠시 동안 등록합니다. 따라서'clearTime()'명령을 사용하면 시계가 Guy Lombardo와 밴드의 전날 인 12 월 31 일/1969 년 12 월 31 일 자정에 자정까지 현지 시간으로 되돌아갑니다. * Auld Lang Syne * . – BalRog

+0

@BalRog이 경우에 직접적으로 Date.parse ("MM/dd/yyyy", "1/1/1970")' – dmahapatro

+0

@dmahaptro와 같은 신기원 날짜를 사용할 수 있습니다. 즉각적인 문제는 해결되지만 여기에 더 깊은 문제입니다. 'Date.parse ("MM/dd/yyyy", "1/1/1970")은 대부분의 사람들에게 "신기원"이 아닙니다. 이 표현은 시간대에 따라 다르지만 Epoch는 그렇지 않습니다. 답이 현지 시간을 기준으로 삼는다면 Epoch를 기본 시작점으로 사용하지 않는 것이 가장 좋습니다. – BalRog

관련 문제