2016-04-27 65 views
1

我無法找到一種方式,迅速寫這一點,但我怎麼可以現在到今年年底之間的時間差?我已經在Java中做到了這一點,但無法找到一個方法來做到同樣在迅速。這裏是我寫的java邏輯:斯威夫特:日期差異

 Calendar today = Calendar.getInstance(); 
     Calendar endOfYear = Calendar.getInstance(); 
     endOfYear.setTime(new Date(0)); 
     endOfYear.set(Calendar.DAY_OF_MONTH, 31); 
     endOfYear.set(Calendar.MONTH, 11); 
     endOfYear.set(Calendar.YEAR, Calendar.getInstance().get(Calendar.YEAR)); 

     double t = endOfYear.getTimeInMillis() - today.getTimeInMillis(); 
     String time = new SimpleDateFormat("0:ss", Locale.US).format(t); 

這個輸出當然只有秒數倒數,我正在試圖迅速做。

UPDATE:

我所擁有的是:

func timer() { 
    let time = NSDateFormatter.localizedStringFromDate(NSDate(), dateStyle: NSDateFormatterStyle.NoStyle, timeStyle: NSDateFormatterStyle.MediumStyle) 
    timeLabel.text = "\(time)" 
} 

這只是我不想整個時間...

+1

考慮到這是不是一個代碼重構現場,這將是巨大的,如果你可以添加你的'swift'代碼,以便我們可以計算出你在做什麼錯。 –

+0

還有的更新 –

回答

0

您創建的NSDate 2個實例,然後你使用CFDateGetIntervalSinceDate(current_time, year_end)

這類似於你想要的東西(不是很準確的東西,但搜索如何獲得準確的文檔一年的結束日期,包括時間和秒):

let dateFormatter = NSDateFormatter() 
dateFormatter.dateFormat = "dd-mm-yyyy" 
let currentTime = NSDate() 
let yearEnd = dateFormatter.dateFromString("31-12-2016") 
let interval = CFDateGetTimeIntervalSinceDate(currentTime, yearEnd) 
print("\(Int(interval)) seconds left until the year's end") 
+0

有沒有一種方法,設定年programmically而不是harcoding像示例代碼我寫的? –

+0

我的例子中使用的原始的方法。我很確定你可以自動獲得年終。檢查** NSDate **和** NSCalendar **文檔。 – Lawrence413

1

我花了一些時間,但是這是我一直在尋找:

let date = NSDate() 
    let calendar = NSCalendar.currentCalendar() 
    let components = calendar.components([.Day, .Month, .Year, .Hour, .Minute, .Second, .Nanosecond], fromDate: date) 
    let now = NSCalendar.currentCalendar().dateWithEra(1, year: components.year, month: components.month, day: components.day, hour: components.hour, minute: components.minute, second: components.second, nanosecond: components.nanosecond)! 
    let newYears = NSCalendar.currentCalendar().dateWithEra(1, year: components.year, month: 12, day: 31, hour: 01, minute: 00, second: 00, nanosecond: 00)! 


    let units: NSCalendarUnit = [.Day, .Month, .Year, .Hour, .Minute, .Second] 
    let difference = NSCalendar.currentCalendar().components(units, fromDate: now, toDate: newYears, options: []) 

    let seconds = difference.second 

這表明作爲定時器一種格式,類似於this哪裏它表示這是n天,n小時,n分鐘,n秒。 雖然謝謝!