এনএসডিটকে এনএসএস স্ট্রিংয়ে রূপান্তর করুন


252

আমি কিভাবে রূপান্তর না, NSDateকরতে NSStringমধ্যে যাতে শুধুমাত্র বছর @ "YYYY" ফরম্যাট স্ট্রিং আউটপুট কি?

উত্তর:


468

কেমন...

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy"];

//Optionally for time zone conversions
[formatter setTimeZone:[NSTimeZone timeZoneWithName:@"..."]];

NSString *stringFromDate = [formatter stringFromDate:myNSDateInstance];

//unless ARC is active
[formatter release];

সুইফট 4.2:

func stringFromDate(_ date: Date) -> String {
    let formatter = DateFormatter()
    formatter.dateFormat = "dd MMM yyyy HH:mm" //yyyy
    return formatter.string(from: date)
}

24
এটি মেমরি ফুটো তৈরি করবে, যেহেতু ফরম্যাটারটি কখনও প্রকাশিত হয় না।
মানা

6
initসঙ্গে ব্যবহার করবেন না NSDateFormatter। এটি আইওএস ৩.২ এর পরে সরানো হয়েছে । (এবং আপনি যদি এর পরিবর্তে কোনও ক্লাসের পদ্ধতি ব্যবহার করেন তবে এটি স্বতঃস্ফূর্ত হবে এবং আপনারও ফাঁসের সমস্যা হবে না))
জেকেল

3
সত্যিই নীচে স্থানীয়করণের
স্ট্রিংফ্র্যাম তারিখটি

4
@ জেকেল ডকুমেন্টেশন কী বলত তা আমি নিশ্চিত নই, তবে এখন এটি initএকাধিক জায়গায় পরামর্শ দেয় ।
নিল এয়ার্ড

2
আমি এটির স্বতঃসংশোধন করতাম (3 বছর আগে)
অ্যাডাম

283

আমি জানি না কীভাবে আমরা সকলে এটি মিস করেছি: লোকালাইজড স্ট্রিংফ্রমেড তারিখ: ডেট স্টাইল: টাইম স্টাইল:

NSString *dateString = [NSDateFormatter localizedStringFromDate:[NSDate date] 
                                                      dateStyle:NSDateFormatterShortStyle 
                                                      timeStyle:NSDateFormatterFullStyle];
NSLog(@"%@",dateString);

আউটপুটস '13 / 06/12 00:22:39 GMT + 03: 00 '


একবার কোনও স্ট্রিংয়ে লেখা, এটিকে পড়ার মতো কোনও সুন্দর ঝরঝরে উপায় আছে কি? (যারা এনএসডিট ফরমেটার এনাম ব্যবহার করে)
ফোনিক্স

@ ফোনিক্স আমি এটি ভাবি না - এটি একটি স্থানীয়ীকৃত স্ট্রিং, যার অর্থ এটি ব্যবহারকারীর লোকাল সেটিংসের উপর নির্ভর করে। আপনার কখনও এই জাতীয় বিন্যাসে তারিখ সংরক্ষণ করা উচিত নয় কারণ সেটিংস যে কোনও সময় পরিবর্তন করতে পারে।
ভিক্টর বেনি

এটি দুর্দান্ত যদি আপনি ফর্ম্যাটরটি বিরল ব্যবহার করেন। অন্যথায় আপনার একটি ক্যাশে দরকার।
মাইক গ্লুখভ

দ্রুত পদক্ষেপে: চলুন তারিখের স্ট্রিং = এনএসডিট ফরমেটার.লোকালাইজড স্ট্রিংফ্রোম্যাটেট (তারিখ, তারিখশৈলী: .শোর্ট স্টাইল, টাইম স্টাইল: .ফুল স্টাইল);
ক্রিস্তান

1
কোডের সংখ্যা হ্রাস পেয়েছে এবং এর সঠিকভাবে কাজ করার জন্য ধন্যবাদ
প্রীথা

87

সময়, বছর, মাস এবং দিন সহ সাধারণ বিন্যাস সরবরাহ করে আরও মান যোগ করার আশা করি। আপনি এই বিন্যাসটি মাত্র এক বছরেরও বেশি সময় ব্যবহার করতে পারেন

[dateFormat setDateFormat: @"yyyy-MM-dd HH:mm:ss zzz"]; 

24

NSDateওয়েবে প্রচুর সহায়ক রয়েছে , আমি ব্যবহার করার প্রবণতা রাখি:

https://github.com/billymeltdown/nsdate-helper/

নীচে রেডমি এক্সট্র্যাক্ট:

  NSString *displayString = [NSDate stringForDisplayFromDate:date];

এটি নিম্নলিখিত ধরণের আউটপুট উত্পাদন করে:

3:42 AM  if the date is after midnight today
Tuesday  if the date is within the last seven days
Mar 1  if the date is within the current calendar year
Mar 1, 2008  else ;-)

এটি অবশ্যই একটি দুর্দান্ত সমাধান। আপনি কীভাবে আপনার তারিখগুলি দেখতে চান এবং কডিং দিয়ে চালিয়ে যেতে পারেন তা নিয়ে চিন্তায় সময় নষ্ট করবেন না। :)
কাইলটার্নার

13

সুইফটে:

var formatter = NSDateFormatter()
formatter.dateFormat = "yyyy"
var dateString = formatter.stringFromDate(YourNSDateInstanceHERE)

সুইফ্ট ৩.০ এ ফরম্যাটারে = তারিখের ফর্ম্যাটার () ফরম্যাটার.ডেটফর্ম্যাট = "ইয়েই" রিটার্ন ফরম্যাটার.স্ট্রিং (তারিখ থেকে)
ভিক্টর লের্তে

8
  NSDateFormatter *dateformate=[[NSDateFormatter alloc]init];
  [dateformate setDateFormat:@"yyyy"]; // Date formater
  NSString *date = [dateformate stringFromDate:[NSDate date]]; // Convert date to string
  NSLog(@"date :%@",date);

1
"YYYY" বর্তমান সপ্তাহের দিনটিকে দিন নয়। পরিবর্তে "yyyy" ব্যবহার করুন। আরও তথ্যের জন্য এই তাই প্রশ্ন দেখুন। stackoverflow.com/questions/15133549/…
স্টিভ মোসার

ধন্যবাদ স্টিভ মোজার :)
এসআর নায়ক

4

যদি আপনার কাছে NSDate -descriptionWithCalendarFormat:timeZone:locale:উপলব্ধ না থাকে (আমি বিশ্বাস করি না যে আইফোন / কোকো টাচ এতে অন্তর্ভুক্ত রয়েছে) আপনার কয়েকটি সি স্টাইলের স্ট্রিং সহ আশেপাশে স্ট্রফটাইম এবং বানর ব্যবহার করতে হবে। আপনি NSDateব্যবহার থেকে ইউনিক্স টাইমস্ট্যাম্প পেতে পারেন NSDate -timeIntervalSince1970


4
+(NSString*)date2str:(NSDate*)myNSDateInstance onlyDate:(BOOL)onlyDate{
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    if (onlyDate) {
        [formatter setDateFormat:@"yyyy-MM-dd"];
    }else{
        [formatter setDateFormat: @"yyyy-MM-dd HH:mm:ss"];
    }

    //Optionally for time zone conversions
    //   [formatter setTimeZone:[NSTimeZone timeZoneWithName:@"..."]];

    NSString *stringFromDate = [formatter stringFromDate:myNSDateInstance];
    return stringFromDate;
}

+(NSDate*)str2date:(NSString*)dateStr{
    if ([dateStr isKindOfClass:[NSDate class]]) {
        return (NSDate*)dateStr;
    }

    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    [dateFormat setDateFormat:@"yyyy-MM-dd"];
    NSDate *date = [dateFormat dateFromString:dateStr];
    return date;
}

3

কেবল এই এক্সটেনশনটি যুক্ত করুন:

extension NSDate {
    var stringValue: String {
        let formatter = NSDateFormatter()
        formatter.dateFormat = "yourDateFormat"
        return formatter.stringFromDate(self)
    }
}

2

আপনি যদি ম্যাক ওএস এক্সে থাকেন তবে আপনি লিখতে পারেন:

NSString* s = [[NSDate date] descriptionWithCalendarFormat:@"%Y_%m_%d_%H_%M_%S" timeZone:nil locale:nil];

তবে এটি আইওএস এ উপলব্ধ নয়।


1

দ্রুত উত্তর 4

static let dateformat: String = "yyyy-MM-dd'T'HH:mm:ss"
public static func stringTodate(strDate : String) -> Date
{

    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = dateformat
    let date = dateFormatter.date(from: strDate)
    return date!
}
public static func dateToString(inputdate : Date) -> String
{

    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = dateformat
    return formatter.string(from: inputdate)

}

0
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar components:(NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay) fromDate:myNSDateInstance];
NSInteger year = [components year];
// NSInteger month = [components month];
NSString *yearStr = [NSString stringWithFormat:@"%ld", year];

0

উদাহরণস্বরূপ আপনার তারিখের প্রয়োজনীয় তারিখের ফর্ম্যাটটির জন্য আপনার নিজস্ব ইউটিলিটি সংজ্ঞায়িত করুন।

NSString * stringFromDate(NSDate *date)  
 {   NSDateFormatter *formatter
    [[NSDateFormatter alloc] init];  
    [formatter setDateFormat:@"MM ∕ dd ∕ yyyy, hh꞉mm a"];    
    return [formatter stringFromDate:date]; 
}

0

এটি দ্রুত বিন্যাস:

func dateFormatterWithCalendar(calndarIdentifier: Calendar.Identifier, dateFormat: String) -> DateFormatter {

    let formatter = DateFormatter()
    formatter.calendar = Calendar(identifier: calndarIdentifier)
    formatter.dateFormat = dateFormat

    return formatter
}


//Usage
let date = Date()
let fotmatter = dateFormatterWithCalendar(calndarIdentifier: .gregorian, dateFormat: "yyyy")
let dateString = fotmatter.string(from: date)
print(dateString) //2018
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.