वर्तमान NSDate को टाइमस्टैम्प प्रारूप में प्राप्त करें


83

मेरे पास एक बुनियादी तरीका है जो वर्तमान समय प्राप्त करता है और इसे एक स्ट्रिंग में सेट करता है। हालाँकि, मैं 1970 की टाइमस्टैम्प प्रारूप के बाद से इसे UNIX में वर्तमान तिथि और समय के प्रारूप के लिए कैसे प्राप्त कर सकता हूं?

यहाँ मेरा कोड है:

NSDate *currentTime = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"hh-mm"];
NSString *resultString = [dateFormatter stringFromDate: currentTime];

क्या NSDateFormatter'resultString' को टाइमस्टैम्प में बदलने के लिए उपयोग करना संभव है ?

जवाबों:


216

यहाँ मेरा उपयोग है:

NSString * timestamp = [NSString stringWithFormat:@"%f",[[NSDate date] timeIntervalSince1970] * 1000];

(मिलीसेकंड के लिए 1000 बार, अन्यथा, इसे बाहर ले जाएं)

यदि आप इसे हर समय उपयोग कर रहे हैं, तो मैक्रो घोषित करना अच्छा हो सकता है

#define TimeStamp [NSString stringWithFormat:@"%f",[[NSDate date] timeIntervalSince1970] * 1000]

फिर इसे इस तरह से कॉल करें:

NSString * timestamp = TimeStamp;

या एक विधि के रूप में:

- (NSString *) timeStamp {
    return [NSString stringWithFormat:@"%f",[[NSDate date] timeIntervalSince1970] * 1000];
}

जैसा कि TimeInterval

- (NSTimeInterval) timeStamp {
    return [[NSDate date] timeIntervalSince1970] * 1000;
}

ध्यान दें:

1000 को टाइमस्टैम्प को मिलीसेकंड में बदलना है। आप इसे हटा सकते हैं यदि आप अपना समय पसंद करते हैं तो सेकंड में निष्क्रिय करें।

तीव्र

यदि आप स्विफ्ट में एक वैश्विक चर चाहते हैं, तो आप इसका उपयोग कर सकते हैं:

var Timestamp: String {
    return "\(NSDate().timeIntervalSince1970 * 1000)"
}

फिर, आप इसे कॉल कर सकते हैं

println("Timestamp: \(Timestamp)")

फिर से, *1000मिलिसकंड के लिए है, यदि आप चाहें, तो आप इसे हटा सकते हैं। यदि आप इसे एक के रूप में रखना चाहते हैंNSTimeInterval

var Timestamp: NSTimeInterval {
    return NSDate().timeIntervalSince1970 * 1000
}

इन्हें किसी भी वर्ग के संदर्भ से बाहर घोषित करें और वे कहीं भी सुलभ होंगे।


2
कोई समस्या नहीं है, मैंने मैक्रो के साथ अपडेट किया है जो मैं आपकी स्थिति के लिए उपयोगी होने की स्थिति में उपयोग करता हूं!
लोगन

3
धन्यवाद @Logan लेकिन मुझे यकीन है कि मैक्रो हमेशा हतोत्साहित हैं। आप मैक्रोज़ के साथ एक बड़े कार्यक्रम की समझ आसानी से खो सकते हैं। यह केवल एक विधि बनाने के लिए सबसे अच्छा होगा जो ऐसा करता है और जब भी आपको इसकी आवश्यकता होती है तो इसे बुलाया जाता है।
सुपरटेकनोबॉफ़

BTW - यदि आप किसी शब्दकोश में मूल्य जोड़ रहे हैं, तो आप बस कर सकते हैं:@{@"timestamp": @([[NSDate date] timeIntervalSince1970])
Cbas


7
- (void)GetCurrentTimeStamp
    {
        NSDateFormatter *objDateformat = [[NSDateFormatter alloc] init];
        [objDateformat setDateFormat:@"yyyy-MM-dd"];
        NSString    *strTime = [objDateformat stringFromDate:[NSDate date]];
        NSString    *strUTCTime = [self GetUTCDateTimeFromLocalTime:strTime];//You can pass your date but be carefull about your date format of NSDateFormatter.
        NSDate *objUTCDate  = [objDateformat dateFromString:strUTCTime];
        long long milliseconds = (long long)([objUTCDate timeIntervalSince1970] * 1000.0);

        NSString *strTimeStamp = [NSString stringWithFormat:@"%lld",milliseconds];
NSLog(@"The Timestamp is = %@",strTimeStamp);
    }

 - (NSString *) GetUTCDateTimeFromLocalTime:(NSString *)IN_strLocalTime
    {
        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
        [dateFormatter setDateFormat:@"yyyy-MM-dd"];
        NSDate  *objDate    = [dateFormatter dateFromString:IN_strLocalTime];
        [dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
        NSString *strDateTime   = [dateFormatter stringFromDate:objDate];
        return strDateTime;
    }

नोट: - टाइमस्टैम्प UTC ज़ोन में होना चाहिए, इसलिए मैं हमारे स्थानीय समय को UTC समय में परिवर्तित करता हूँ।


आपके GetCurrentTimeStamp () में कुछ लोअरकेस समस्याएँ हैं। कटौती और देखने के लिए Xcode में पेस्ट करें
tdios

कृपया इस "NSString * strTimeStamp = [NSString stringWithFormat: @"% lld ", मिलीसेकंड] का उपयोग करें; NSLog (@" टाइमस्टैम्प =% @ ", stratStamp);"
विक्की

6

यदि आप इस विधि को सीधे NSDate ऑब्जेक्ट पर कॉल करना चाहते हैं और किसी भी दशमलव स्थानों के बिना मिलीसेकंड में स्ट्रिंग के रूप में टाइमस्टैम्प प्राप्त करना चाहते हैं, तो इस विधि को एक श्रेणी के रूप में परिभाषित करें:

@implementation NSDate (MyExtensions)
- (NSString *)unixTimestampInMilliseconds
{
     return [NSString stringWithFormat:@"%.0f", [self timeIntervalSince1970] * 1000];
}

1

// निम्नलिखित विधि मिलीसेकंड में परिवर्तित होने के बाद आपको टाइमस्टैम्प लौटा देगी। [रिट्रांस स्ट्रिंग]

- (NSString *) timeInMiliSeconds
{
    NSDate *date = [NSDate date];
    NSString * timeInMS = [NSString stringWithFormat:@"%lld", [@(floor([date timeIntervalSince1970] * 1000)) longLongValue]];
    return timeInMS;
}

1

का भी उपयोग कर सकते हैं

@(time(nil)).stringValue);

सेकंड में टाइमस्टैम्प के लिए।


1

वर्तमान टाइमस्टैम्प प्राप्त करने के लिए मैक्रो को परिभाषित करना सुविधाजनक है

class Constant {
    struct Time {
        let now = { round(NSDate().timeIntervalSince1970) } // seconds
    }
} 

तब आप उपयोग कर सकते हैं let timestamp = Constant.Time.now()


0

स्विफ्ट:

मेरे पास एक UILabel है जो एक कैमरा पूर्वावलोकन में टाइमस्टैम्प दिखाता है।

    var timeStampTimer : NSTimer?
    var dateEnabled:  Bool?
    var timeEnabled: Bool?
   @IBOutlet weak var timeStampLabel: UILabel!

override func viewDidLoad() {
        super.viewDidLoad()
//Setting Initial Values to be false.
        dateEnabled =  false
        timeEnabled =  false
}

override func viewWillAppear(animated: Bool) {

        //Current Date and Time on Preview View
        timeStampLabel.text = timeStamp
        self.timeStampTimer = NSTimer.scheduledTimerWithTimeInterval(1.0,target: self, selector: Selector("updateCurrentDateAndTimeOnTimeStamperLabel"),userInfo: nil,repeats: true)
}

func updateCurrentDateAndTimeOnTimeStamperLabel()
    {
//Every Second, it updates time.

        switch (dateEnabled, timeEnabled) {
        case (true?, true?):
            timeStampLabel.text =  NSDateFormatter.localizedStringFromDate(NSDate(), dateStyle: .LongStyle, timeStyle: .MediumStyle)
            break;
        case (true?, false?):
            timeStampLabel.text = NSDateFormatter.localizedStringFromDate(NSDate(), dateStyle: .LongStyle, timeStyle: .NoStyle)
            break;

        case (false?, true?):
            timeStampLabel.text = NSDateFormatter.localizedStringFromDate(NSDate(), dateStyle: .NoStyle, timeStyle: .MediumStyle)
            break;
        case (false?, false?):
            timeStampLabel.text =  NSDateFormatter.localizedStringFromDate(NSDate(), dateStyle: .NoStyle, timeStyle: .NoStyle)
            break;
        default:
            break;

        }
    }

मैं एक चेतावनी देखने के लिए एक सेटिंग बटन स्थापित कर रहा हूं।

@IBAction func settingsButton(sender : AnyObject) {


let cameraSettingsAlert = UIAlertController(title: NSLocalizedString("Please choose a course", comment: ""), message: NSLocalizedString("", comment: ""), preferredStyle: .ActionSheet)

let timeStampOnAction = UIAlertAction(title: NSLocalizedString("Time Stamp on Photo", comment: ""), style: .Default) { action in

    self.dateEnabled = true
    self.timeEnabled =  true

}
let timeStampOffAction = UIAlertAction(title: NSLocalizedString("TimeStamp Off", comment: ""), style: .Default) { action in

    self.dateEnabled = false
    self.timeEnabled =  false

}
let dateOnlyAction = UIAlertAction(title: NSLocalizedString("Date Only", comment: ""), style: .Default) { action in

    self.dateEnabled = true
    self.timeEnabled =  false


}
let timeOnlyAction = UIAlertAction(title: NSLocalizedString("Time Only", comment: ""), style: .Default) { action in

    self.dateEnabled = false
    self.timeEnabled =  true
}

let cancel = UIAlertAction(title: NSLocalizedString("Cancel", comment: ""), style: .Cancel) { action in

}
cameraSettingsAlert.addAction(cancel)
cameraSettingsAlert.addAction(timeStampOnAction)
cameraSettingsAlert.addAction(timeStampOffAction)
cameraSettingsAlert.addAction(dateOnlyAction)
cameraSettingsAlert.addAction(timeOnlyAction)

self.presentViewController(cameraSettingsAlert, animated: true, completion: nil)

}


0
    NSDate *todaysDate = [NSDate new];
NSDateFormatter *formatter = [NSDateFormatter new];
[formatter setDateFormat:@"MM-dd-yyyy HH:mm:ss"];
NSString *strDateTime = [formatter stringFromDate:todaysDate];

NSString *strFileName = [NSString stringWithFormat:@"/Users/Shared/Recording_%@.mov",strDateTime];
NSLog(@"filename:%@",strFileName);

लॉग होगा: फ़ाइल नाम: / उपयोगकर्ता / साझा / रिकॉर्डिंग_06-28-2016 12: 53: 26 बजे


0

यदि आपको स्ट्रिंग के रूप में समय टिकट की आवश्यकता है।

time_t result = time(NULL);                
NSString *timeStampString = [@(result) stringValue];

0

NSDate स्विफ्ट 3 से टाइमस्टैम्प प्राप्त करने के लिए

func getCurrentTimeStampWOMiliseconds(dateToConvert: NSDate) -> String {
    let objDateformat: DateFormatter = DateFormatter()
    objDateformat.dateFormat = "yyyy-MM-dd HH:mm:ss"
    let strTime: String = objDateformat.string(from: dateToConvert as Date)
    let objUTCDate: NSDate = objDateformat.date(from: strTime)! as NSDate
    let milliseconds: Int64 = Int64(objUTCDate.timeIntervalSince1970)
    let strTimeStamp: String = "\(milliseconds)"
    return strTimeStamp
}

काम में लाना

let now = NSDate()
let nowTimeStamp = self.getCurrentTimeStampWOMiliseconds(dateToConvert: now)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.