আইফোন ওএস: একটি নির্দিষ্ট তারিখের জন্য কীভাবে আমি এনএসডিট তৈরি করব?


98

একটি সাধারণ জিনিস মনে হচ্ছে তবে এটি করার কোনও উপায় আমি খুঁজে পাচ্ছি না।

এটি বেশ কয়েকটি দম্পতি বিভিন্ন পদ্ধতি দেখতে দুর্দান্ত হবে।

উত্তর:


211

@ চকের উত্তরটি সঠিক, এবং আমাকে নিম্নলিখিত কোডে নিয়ে যান। ভেবেছিলাম আমি ভাগ করে নিই:

NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setDay:10];
[comps setMonth:10];
[comps setYear:2010];
NSDate *date = [[NSCalendar currentCalendar] dateFromComponents:comps];

7
নোট রয়েছে setHour, setMinute, setSecondতীক্ষ্ণ স্বরূপ গ্র্যানুলারিটি জন্য, ইত্যাদি।
ডিভাইস 1

19

আপনি এটি ব্যবহার করতে পারেন

NSString *dateString = @"03-Sep-11";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"dd-MMM-yy";
NSDate *date = [dateFormatter dateFromString:dateString];

আশা করি ইহা তোমাকে সাহায্য করবে.


"তারিখফ্র্যামস্ট্রিং" ফাংশনটি ব্যবহার করে সতর্ক থাকুন - আমি দেখতে পেয়েছি যে কিছু সঠিক-বৈধ তারিখের সাথে এটি খারাপভাবে ব্যর্থ হবে। তারিখের স্ট্রিংগুলি পার্সিংয়ের বিকল্প পদ্ধতির জন্য নীচে আমার পোস্টটি দেখুন।
মাইক গ্লেডহিল

ওদেড বেনের যেভাবে উল্লেখ করা হয়েছে তাও অন্য একটি সেরা উপায় ..... এনএসডেটকোম্পোনটিস * কমপস = [[এনএসডেটক্যাম্পোন্টস বরাদ্দ করা]]]; [কমপস সেটডে: 10]; [কমপ্লেস সেটস্মানথ: 10]; [কমপস সেট ইয়ার: ২০১০]; এনএসডিট * তারিখ = [[এনএসক্যালেন্ডার বর্তমানক্যালেন্ডার] তারিখফ্রম সংকলন: কমপস];
কমলেশ্বর

16

আপনি যদি ইউনিক্স তারিখের চেয়ে নির্দিষ্ট ক্যালেন্ডারের তারিখের কথা বলছেন তবে আপনি সম্ভবত এনএসক্যালেন্ডারটি চান dateFromComponents:


9

সুইফ্ট উদাহরণ

উদাহরণগুলি প্রায়শই শেখার সহজতম উপায়। এখানে কিছু উদাহরণ আছে।

এখন

এই এক সহজ।

let currentDateTime = Date()

20 ফেব্রুয়ারী, 2017

// Specify date components
var dateComponents = DateComponents()
dateComponents.year = 2017
dateComponents.month = 2
dateComponents.day = 20

// Create date from components
let userCalendar = Calendar.current // user calendar
let dateThisPostWasUpdated = userCalendar.date(from: dateComponents)

এপ্রিল 1, 1976

// Specify date components
var dateComponents = DateComponents()
dateComponents.year = 1976
dateComponents.month = 4
dateComponents.day = 1

// Create date from components
let userCalendar = Calendar.current // user calendar
let appleFoundedDate = userCalendar.date(from: dateComponents)

আরও বিশদ দরকার ...?

খেজুর তৈরির অন্যান্য উপায়ও রয়েছে। আপনি যদি সেগুলি জানতে চান, পাশাপাশি কীভাবে কোনও তারিখ প্রদর্শন করবেন তবে আমার পূর্ণ উত্তর দেখুন


8

এনএসডেটের জন্য ডকুমেন্টেশন দেখুন । আপনি ব্যবহার করতে পারেন dateFromString:পদ্ধতি NSDateFormatterবা dateFromComponents:পদ্ধতি NSCalendar


আমি এই তারিখটি পেয়েই চলেছি: "1969-12-31 16:00:00" -0800 স্ট্রিং থেকে তারিখটি ব্যবহার করার সময়
নিকডেডুড

এনএসডিট ফরমেটার * তারিখফর্ম্যাটর = [[এনএসডিট ফরমেটার বরাদ্দ] init]; এনএসডেট * ক্যাপচার স্টার্টডেট = [তারিখের ফর্ম্যাটারের তারিখফ্র্যামস্ট্রিং: @ "জানুয়ারী 2, 2001"]; এনএসএলগ (@ "% @", [স্টার্টডেটের বিবরণ]]; আউটপুট: 2010-04-05 10: 49: 47,688 Calendar2 [21339: 207] 1969-12-31 16:00:00 -0800
nickthedude

আপনার প্লেইনের পরিবর্তে ফর্ম্যাট করা তারিখে কিছু পরামিতি সেট করার দরকার আছে init?
জুল 18

3

এই প্রশ্নের উত্তর খুঁজতে গিয়ে আমি এই থ্রেডটি পেয়েছি তবে তারপরে আমি আমার বিগ নার্ড রাঞ্চ অবজেক্টিভ-সি প্রোগ্রামিং বইটিতে একটি ভাল উদাহরণ পেয়েছি। তাদের কৃতিত্ব, আমাকে নয়।

  NSDateComponents *myBDay  =[[NSDateComponents alloc] init];
    [myBDay setDay:22];
    [myBDay setMonth: 04];
    [myBDay setYear: 1984];
    [myBDay setHour:9];
    [myBDay setMinute:25];
    [myBDay setSecond:35];

    NSCalendar *g = [[ NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
    NSDate *dateOfBirth = [g dateFromComponents:myBDay];

2

এটা হাস্যকর, তাই না?

2013 সালের মাঝামাঝি এবং অ্যাপল এখনও এনএসডিট মান সেট করার সহজ উপায় সরবরাহ করে নি।

আমার বর্তমান আইপ্যাড প্রকল্পের সময়, আমি বিশ্বাস করতে পারি না যে এনএসডিট থেকে বছরের মূল্য পেতে আমার নিজস্ব সহায়ক শ্রেণি লিখতে আমার কিছুদিনের জন্য উত্পাদনশীলতা বন্ধ করতে হয়েছিল। মানে, আসুন, এটি মৌলিক জিনিস।

যাইহোক, আমার প্রকল্পে আমি ব্যবহৃত সহায়ক শ্রেণিটি এখানে একটি স্ট্রিংটিকে এনএসডিট মানতে রূপান্তর করতে:

@implementation DateHelper

+(NSDate*)parseDateString:(NSString *)dateString
{
    NSDateFormatter *rfc3339TimestampFormatterWithTimeZone = [[NSDateFormatter alloc] init];
    [rfc3339TimestampFormatterWithTimeZone setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];
    [rfc3339TimestampFormatterWithTimeZone setDateFormat:@"MMM dd, yyyy"];

    NSDate *theDate = nil;
    NSError *error = nil;
    if (![rfc3339TimestampFormatterWithTimeZone getObjectValue:&theDate forString:dateString range:nil error:&error]) {
        NSLog(@"Date '%@' could not be parsed: %@", dateString, error);
    }

    return theDate;
}

@end

এই কোডটি ব্যবহার করে, আপনি এমন কিছু ব্যবহার করে একটি এনএসডিট মান সেট করতে পারেন:

NSDate* date = [DateHelper parseDateString:@"Jul 16, 2013"];

দ্রষ্টব্য: এই ফাংশনটি এখান থেকে নেওয়া কোডের ভিত্তিতে ছিল: https://stackoverflow.com/a/3968411/391605

আমার সমাধান হয়েছে নিম্নলিখিত কোড ব্যবহার করতে, কিন্তু আমি দেখা গেছে যে কখনও কখনও , এটা ঠিক বিশ্লেষণ করা হবে, এবং ফিরে আসবে শূন্য

//  Take a date string in the format "Oct 23, 2013", and convert it into a NSDate value
//  THIS DOESN'T WORK !  DON'T TRUST THIS CODE !!
NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MMM dd, yyyy"];
[formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];

NSDate* date = [formatter dateFromString:dateString];

আমার মনে আছে এটি "অক্টোবর 12, 2012" এ খুব খারাপভাবে ব্যর্থ হয়েছিল ... এই কারণেই আমি উপরে দেখানো আরও জটিল "পার্সেডেটস্ট্রিং" ফাংশনটি ছেড়ে দিয়েছিলাম এবং ব্যবহার করেছি।

আমার কথা হচ্ছে ... সাবধান!

খুব বেসিক কিছু NSDate ফাংশন ঠিকমতো কাজ করে না ...

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.