2013-06-13 6 views
7

का वर्ष, महीना और दिन बदलें मेरे पास उदाहरण के लिए ईवेंट की प्रारंभ तिथि है: 2013-05-17 15:00:12 +0000। मेरा सवाल यह है कि, मैं आज की तारीख के साथ 2013-05-17 कैसे बदल सकता हूं, लेकिन समय छोड़ दो?मेरे आईफोन एप्लिकेशन में एनएसडीएटी ऑब्जेक्ट

उत्तर

34

के बीच समय-अंतराल का अंतर ले कर आपको तारीख घटकों को इकट्ठा करने और आवश्यक गुणों में संशोधन करने की आवश्यकता है।

//gather current calendar 
NSCalendar *calendar = [NSCalendar currentCalendar]; 

//gather date components from date 
NSDateComponents *dateComponents = [calendar components:(NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond) fromDate:[NSDate date]]; 

//set date components 
[dateComponents setDay:17]; 
[dateComponents setMonth:5]; 
[dateComponents setYear:2013]; 

//save date relative from date 
NSDate *date = [calendar dateFromComponents:dateComponents]; 

या तो उस, या आप मूल्य बढ़ाने के लिए 1 दिन में सेकंड की संख्या जोड़ सकते हैं:

NSDate *date = [NSDate dateWithTimeInterval:((60 * 60) * 24) sinceDate:[NSDate date]]; 
+0

1 दिन में सेकेंड की संख्या जोड़ना मानता है कि सभी दिनों में समान मात्रा में सेकंड होते हैं। लेकिन यह एक छलांग दूसरे के लिए तोड़ देगा: https: //en.wikipedia।संगठन/विकी/लीप_सेकंद –

+0

NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit बहिष्कृत हैं। उपयोग करें: (NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond) इसके बजाए। – Niraj

0

आपको आज सुबह 0 बजे और अन्य दिनांक संख्याऑफसेकंड 0 बजे नंबरऑफ सेकेंड खोजने की आवश्यकता है। उनके बीच अंतर खोजें। फिर 2013-05-17 15:00:12 +0000 की संख्या के लिए इस अंतर को जोड़ें।

0

आप एपीआई dateWithString का उपयोग कर वर्तमान तिथि और समय के साथ प्रारंभ तिथि क्यों नहीं बदल सकते हैं। यदि नहीं, तो आप संभवतः एनएसडीएटी की टाइमएडिंगटाइम इंटरवल एपीआई को देख सकते हैं और साथ ही दो एनएसडीएटी

2

या तेज में:

let calendar = NSCalendar.currentCalendar() 
    let components = calendar.components([NSCalendarUnit.Year, NSCalendarUnit.Month, NSCalendarUnit.Day], fromDate: NSDate.init()) 
    components.day = 17 
    components.month = 5 
    components.year = 2013 

    let date = calendar.dateFromComponents(components) 
0

स्विफ्ट 3.0
गेट-डेट जिसमें वर्ष, महीना & वर्तमान तिथि से दिन -5

//CurrentDate 
    let currentDate = Date() 

    let gregorianCalendar = Calendar(identifier: .gregorian) 
    var components = gregorianCalendar.dateComponents([.year, .month, .day], from: currentDate) 

    // Change int value which you want to minus from current Date. 
    components.day = components.day!-5 
    components.month = components.month!-5 
    components.year = components.year!-5 

    let date = gregorianCalendar.date(from: components)! 
    print("Current Date = \(currentDate)") 
    print("Old Date = \(date)") 

स्विफ्ट 2,0

//CurrentDate 
    let currentDate = NSDate() 

    let gregorianCalendar = NSCalendar(identifier: .gregorian) 
    var components = gregorianCalendar.dateComponents([.year, .month, .day], from: currentDate) 

    // Change int value which you want to minus from current Date. 
    components.day = components.day!-5 
    components.month = components.month!-5 
    components.year = components.year!-5 

    let date = gregorianCalendar.date(from: components)! 
    print("Current Date = \(currentDate)") 
    print("Old Date = \(date)") 
2

अपने ब्लॉग पर और अधिक पढ़ें https://github.com/onmyway133/blog/issues/54

आज मैं स्विफ्ट में 2000 के लिए एक तिथि वस्तु का साल बदलने के लिए कोशिश कर रहा हूँ।

let date = Date() 

सबसे पहले, मैं date(bySetting:) साथ करने की कोशिश की, लेकिन यह पिछले एक साल के साथ काम नहीं करता। यह बस रिटर्न शून्य

Calendar.current.date(bySetting: .year, value: 2000, of: date) 

दूसरे, मैं dateComponents साथ की कोशिश की। component.year बदल गया है, लेकिन यह कैलेंडर अभी भी मूल तारीख लौटाता है, बहुत अजीब !! कोई फर्क नहीं पड़ता समय क्षेत्र और कैलेंडर का उपयोग मैं, यह अभी भी इस समस्या को

var component = calendar.dateComponents(in: TimeZone.current, from: base) 
component.year = year 
Calendar.current.date(from: component) 

अंत में, मैं और अधिक स्पष्ट होना करने की कोशिश की है, और यह

var component = calendar.dateComponents([.year, .month, .day, .hour, .minute, .second], from: base) 
component.year = year 
Calendar.current.date(from: component) 
+0

यह कोड हर बार –

+1

@WilliamT के लिए मेरे लिए शून्य देता है। हाय, मैंने अपना जवाब अपडेट किया, कृपया एक नज़र डालें – onmyway133

4

स्विफ्ट 3 & आईओएस 10.2

काम करता है
let calendar = Calendar.current 

    var dateComponents: DateComponents? = calendar.dateComponents([.hour, .minute, .second], from: Date()) 

    dateComponents?.day = 17 
    dateComponents?.month = 5 
    dateComponents?.year = 2013 

    let date: Date? = calendar.date(from: dateComponents!) 
    print(date!) 

स्विफ्ट 3 & आईओएस 10.2

संबंधित मुद्दे