উত্তর:
[[NSDate date] timeIntervalSince1970];
এটি যুগের দ্বিতীয়ার হিসাবে সেকেন্ডের সংখ্যাটি দেয় returns আমি প্রায় নিশ্চিত আপনি ভগ্নাংশের অংশ থেকে মিলি সেকেন্ড অ্যাক্সেস করতে পারবেন।
[NSDate timeIntervalSinceReferenceDate]
সস্তা. (যদিও এটি একটি ভিন্ন "যুগের" রেফারেন্স দেয় - আপনি যদি 1970 দেখতে চান তবে ধ্রুবক যোগ করুন NSTimeIntervalSince1970
))
আপনি যদি আপেক্ষিক সময়ের জন্য এটি ব্যবহারের দিকে তাকিয়ে থাকেন (উদাহরণস্বরূপ গেমস বা অ্যানিমেশনের জন্য) আমি বরং CACurrentMediaTime () ব্যবহার করব
double CurrentTime = CACurrentMediaTime();
যা প্রস্তাবিত উপায়; NSDate
নেটওয়ার্কযুক্ত সিঙ্ক-ক্লক থেকে আঁকুন এবং এটি নেটওয়ার্কের সাথে পুনরায় সিঙ্ক করার সময় মাঝে মধ্যে হিচাপ হবে।
এটি বর্তমান পরম সময়টি সেকেন্ডে ফেরত দেয়।
আপনি যদি কেবল দশমিক অংশ চান (অ্যানিমেশনগুলিকে সিঙ্ক করার সময় প্রায়শই ব্যবহৃত হয়),
let ct = CACurrentMediaTime().truncatingRemainder(dividingBy: 1)
আমি অন্যান্য সমস্ত উত্তর একটি আইফোন 4 এস এবং আইপ্যাড 3 (রিলিজ বিল্ডস) এ বেঞ্চমার্ক করেছি। CACurrentMediaTime
অল্প ব্যবধানে কমপক্ষে ওভারহেড রয়েছে। timeIntervalSince1970
অন্যদের তুলনায় অনেক ধীর গতির, সম্ভবত NSDate
উপচে পড়া ত্বকের কারণে , যদিও এটি ব্যবহারের ক্ষেত্রে অনেক ক্ষেত্রেই গুরুত্বপূর্ণ না।
আমি আপনাকে সুপারিশ করব CACurrentMediaTime
যদি আপনি কমপক্ষে ওভারহেড চান এবং কোয়ার্টজ ফ্রেমওয়ার্ক নির্ভরতা যুক্ত করতে কিছু মনে করেন না। অথবা gettimeofday
যদি বহনযোগ্যতা আপনার জন্য অগ্রাধিকার হয়।
এইফোন 4 এস
CACurrentMediaTime: 1.33 µs/call
gettimeofday: 1.38 µs/call
[NSDate timeIntervalSinceReferenceDate]: 1.45 µs/call
CFAbsoluteTimeGetCurrent: 1.48 µs/call
[[NSDate date] timeIntervalSince1970]: 4.93 µs/call
আইপ্যাড 3
CACurrentMediaTime: 1.25 µs/call
gettimeofday: 1.33 µs/call
CFAbsoluteTimeGetCurrent: 1.34 µs/call
[NSDate timeIntervalSinceReferenceDate]: 1.37 µs/call
[[NSDate date] timeIntervalSince1970]: 3.47 µs/call
NSTimeIntervalSince1970
ম্যাক্রো যা দ্রুততম হয়।
NSTimeIntervalSince1970
হ'ল 1970-01-01 এবং "রেফারেন্সের তারিখ" (যেমন 2001-01-01) এর মধ্যে সেকেন্ডের বর্ণনা দেয়, তাই এটি সর্বদা 978307200 এর সমান হয়
সুইফটে আমরা একটি ফাংশন করতে পারি এবং নীচের মতো করতে পারি
func getCurrentMillis()->Int64{
return Int64(NSDate().timeIntervalSince1970 * 1000)
}
var currentTime = getCurrentMillis()
তার কাজ যদিও জরিমানা সুইফট 3.0 কিন্তু আমরা পরিবর্তন করুন এবং ব্যবহার করতে পারেন Date
পরিবর্তে বর্গ NSDate
মধ্যে 3.0
সুইফট 3.0
func getCurrentMillis()->Int64 {
return Int64(Date().timeIntervalSince1970 * 1000)
}
var currentTime = getCurrentMillis()
এখন পর্যন্ত আমি gettimeofday
আইওএস (আইপ্যাড) এ একটি ভাল সমাধান পেয়েছি , যখন আপনি কিছু বিরতি মূল্যায়ন করতে চান (বলুন, ফ্রেমরেট করুন, একটি রেন্ডারিং ফ্রেমের সময় নির্ধারণ করুন ...):
#include <sys/time.h>
struct timeval time;
gettimeofday(&time, NULL);
long millis = (time.tv_sec * 1000) + (time.tv_usec / 1000);
বর্তমান তারিখের জন্য মিলিসেকেন্ডগুলি পেতে।
সুইফট 4+:
func currentTimeInMilliSeconds()-> Int
{
let currentDate = Date()
let since1970 = currentDate.timeIntervalSince1970
return Int(since1970 * 1000)
}
কোডটাইমস্ট্যাম্পস সম্পর্কে জানার জন্য এটি দরকারী হতে পারে, যা মাচ-ভিত্তিক সময় কার্যকারিতার চারপাশে একটি মোড়ক সরবরাহ করে। এটি আপনাকে ন্যানোসেকেন্ড-রেজোলিউশনের সময়কালীন ডেটা দেয় - মিলি সেকেন্ডের চেয়ে 1000000x বেশি সুনির্দিষ্ট। হ্যাঁ, আরও কয়েক মিলিয়ন গুণ (উপসর্গগুলি মিলি, মাইক্রো, ন্যানো, প্রতিটি 1000x শেষের তুলনায় আরও নির্ভুল ise আপনার যখন আরও নির্ভুলতার প্রয়োজন হবে এবং এনএসডিট পদ্ধতির চেয়ে দ্রুত পদ্ধতির কল চাইবেন তখন এটি কার্যকর হবে।
http://eng.pulse.me/line-by-line-speed-analysis-for-ios-apps/
-fno-objc-arc
যদি
// Timestamp after converting to milliseconds.
NSString * timeInMS = [NSString stringWithFormat:@"%lld", [@(floor([date timeIntervalSince1970] * 1000)) longLongValue]];
আমার NSNumber
ঠিক এমন ফলাফল যুক্ত একটি জিনিস দরকার ছিল [[NSDate date] timeIntervalSince1970]
। যেহেতু এই ফাংশনটি অনেকবার ডাকা হয়েছিল এবং আমার আসলে একটি NSDate
বস্তু তৈরি করার প্রয়োজন ছিল না, পারফরম্যান্স দুর্দান্ত ছিল না।
সুতরাং মূল ফাংশনটি যে ফর্ম্যাটটি আমাকে দিচ্ছিল তা পেতে, এটি ব্যবহার করে দেখুন:
#include <sys/time.h>
struct timeval tv;
gettimeofday(&tv,NULL);
double perciseTimeStamp = tv.tv_sec + tv.tv_usec * 0.000001;
যা আপনাকে ঠিক একই ফলাফল দেয় [[NSDate date] timeIntervalSince1970]
পরম সময়টি 1 জানুয়ারী 2001 00:00:00 GMT এর পরম রেফারেন্সের তুলনায় সেকেন্ডে পরিমাপ করা হয়। একটি ধনাত্মক মান উল্লেখের তারিখের পরে একটি তারিখ উপস্থাপন করে, একটি নেতিবাচক মান তার আগে একটি তারিখ উপস্থাপন করে। উদাহরণস্বরূপ, পরম সময় -32940326 16 ডিসেম্বর, 1999 এর 17:54:34 এর সমান। এই ক্রিয়াকলাপে বারবার কল করা একঘেয়েভাবে ফল বাড়ানোর গ্যারান্টি দেয় না। বাহ্যিক সময়ের রেফারেন্সগুলির সাথে সুসংগত হওয়ার কারণে বা ঘড়ির সুস্পষ্ট ব্যবহারকারী পরিবর্তনের কারণে সিস্টেমের সময় হ্রাস পেতে পারে।
এটা চেষ্টা কর :
NSDate * timestamp = [NSDate dateWithTimeIntervalSince1970:[[NSDate date] timeIntervalSince1970]];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"YYYY-MM-dd HH:mm:ss.SSS"];
NSString *newDateString = [dateFormatter stringFromDate:timestamp];
timestamp = (NSDate*)newDateString;
এই উদাহরণে, তারিখবিথটাইমআইন্টারওয়ালসিনস ১৯৯০ ফর্ম্যাটর @ "YYYY-MM-dd HH: mm: ss.SSS" এর সংমিশ্রণে ব্যবহৃত হয় যা বছর, মাস, দিন এবং সময়, ঘন্টা, মিনিট, সেকেন্ড এবং মিলিসেকেন্ডের সাথে সময় ফিরিয়ে দেবে । উদাহরণটি দেখুন: "2015-12-02 04: 43: 15.008"। আমি এনএসএসস্ট্রিংটি নিশ্চিত করেছিলাম যে ফর্ম্যাটটি আগে লেখা হবে।
এটি মূলত একই উত্তর যা @ ত্রিস্তানলোরাক পোস্ট করেছেন, কেবল সুইফট 3 এর জন্য পুনরায় সংশোধন করেছেন:
/// Method to get Unix-style time (Java variant), i.e., time since 1970 in milliseconds. This
/// copied from here: http://stackoverflow.com/a/24655601/253938 and here:
/// http://stackoverflow.com/a/7885923/253938
/// (This should give good performance according to this:
/// http://stackoverflow.com/a/12020300/253938 )
///
/// Note that it is possible that multiple calls to this method and computing the difference may
/// occasionally give problematic results, like an apparently negative interval or a major jump
/// forward in time. This is because system time occasionally gets updated due to synchronization
/// with a time source on the network (maybe "leap second"), or user setting the clock.
public static func currentTimeMillis() -> Int64 {
var darwinTime : timeval = timeval(tv_sec: 0, tv_usec: 0)
gettimeofday(&darwinTime, nil)
return (Int64(darwinTime.tv_sec) * 1000) + Int64(darwinTime.tv_usec / 1000)
}
func currentmicrotimeTimeMillis() -> Int64{
let nowDoublevaluseis = NSDate().timeIntervalSince1970
return Int64(nowDoublevaluseis*1000)
}
এটি আমি সুইফটের জন্য ব্যবহার করেছি
var date = NSDate()
let currentTime = Int64(date.timeIntervalSince1970 * 1000)
print("Time in milliseconds is \(currentTime)")
নির্ভুলতা যাচাই করতে এই সাইটটি ব্যবহার করেছেন http://c موجودہmillis.com/
let timeInMiliSecDate = Date()
let timeInMiliSec = Int (timeInMiliSecDate.timeIntervalSince1970 * 1000)
print(timeInMiliSec)
NSTimeInterval time = ([[NSDate date] timeIntervalSince1970]); //double
long digits = (long)time; //first 10 digits
int decimalDigits = (int)(fmod(time, 1) * 1000); //3 missing digits
/*** long ***/
long timestamp = (digits * 1000) + decimalDigits;
/*** string ***/
NSString *timestampString = [NSString stringWithFormat:@"%ld%03d",digits ,decimalDigits];