কিভাবে একটি ব্যবহারকারীর সময় অঞ্চল পেতে?


116

কেউ কি সুইফটে ব্যবহারকারীদের সময় অঞ্চল পাওয়ার কোনও উপায় জানেন?

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

উত্তর:


290

সম্পাদনা / আপডেট:

এক্সকোড 8 বা তারপরে • সুইফ্ট 3 বা তারপরে

var secondsFromGMT: Int { return TimeZone.current.secondsFromGMT() }
secondsFromGMT  // -7200

আপনার যদি সংক্ষিপ্তসার প্রয়োজন:

var localTimeZoneAbbreviation: String { return TimeZone.current.abbreviation() ?? "" }
localTimeZoneAbbreviation   // "GMT-2"

আপনার যদি টাইমজোন শনাক্তকারী প্রয়োজন:

var localTimeZoneIdentifier: String { return TimeZone.current.identifier }

localTimeZoneIdentifier // "America/Sao_Paulo"

উপলব্ধ সমস্ত সময় অঞ্চল সংক্ষেপণ জানতে:

var timeZoneAbbreviations: [String:String] { return TimeZone.abbreviationDictionary }
timeZoneAbbreviations   // ["CEST": "Europe/Paris", "WEST": "Europe/Lisbon", "CDT": "America/Chicago", "EET": "Europe/Istanbul", "BRST": "America/Sao_Paulo", "EEST": "Europe/Istanbul", "CET": "Europe/Paris", "MSD": "Europe/Moscow", "MST": "America/Denver", "KST": "Asia/Seoul", "PET": "America/Lima", "NZDT": "Pacific/Auckland", "CLT": "America/Santiago", "HST": "Pacific/Honolulu", "MDT": "America/Denver", "NZST": "Pacific/Auckland", "COT": "America/Bogota", "CST": "America/Chicago", "SGT": "Asia/Singapore", "CAT": "Africa/Harare", "BRT": "America/Sao_Paulo", "WET": "Europe/Lisbon", "IST": "Asia/Calcutta", "HKT": "Asia/Hong_Kong", "GST": "Asia/Dubai", "EDT": "America/New_York", "WIT": "Asia/Jakarta", "UTC": "UTC", "JST": "Asia/Tokyo", "IRST": "Asia/Tehran", "PHT": "Asia/Manila", "AKDT": "America/Juneau", "BST": "Europe/London", "PST": "America/Los_Angeles", "ART": "America/Argentina/Buenos_Aires", "PDT": "America/Los_Angeles", "WAT": "Africa/Lagos", "EST": "America/New_York", "BDT": "Asia/Dhaka", "CLST": "America/Santiago", "AKST": "America/Juneau", "ADT": "America/Halifax", "AST": "America/Halifax", "PKT": "Asia/Karachi", "GMT": "GMT", "ICT": "Asia/Bangkok", "MSK": "Europe/Moscow", "EAT": "Africa/Addis_Ababa"]

উপলব্ধ সমস্ত টাইম অঞ্চলগুলির নাম (সনাক্তকারী) জানতে:

var timeZoneIdentifiers: [String] { return TimeZone.knownTimeZoneIdentifiers }
timeZoneIdentifiers           // ["Africa/Abidjan", "Africa/Accra", "Africa/Addis_Ababa", "Africa/Algiers", "Africa/Asmara", "Africa/Bamako", "Africa/Bangui", "Africa/Banjul", "Africa/Bissau", "Africa/Blantyre", "Africa/Brazzaville", "Africa/Bujumbura", "Africa/Cairo", "Africa/Casablanca", "Africa/Ceuta", "Africa/Conakry", "Africa/Dakar", "Africa/Dar_es_Salaam", "Africa/Djibouti", "Africa/Douala", "Africa/El_Aaiun", "Africa/Freetown", "Africa/Gaborone", "Africa/Harare", "Africa/Johannesburg", "Africa/Juba", "Africa/Kampala", "Africa/Khartoum", "Africa/Kigali", "Africa/Kinshasa", "Africa/Lagos", "Africa/Libreville", "Africa/Lome", "Africa/Luanda", "Africa/Lubumbashi", "Africa/Lusaka", "Africa/Malabo", "Africa/Maputo", "Africa/Maseru", "Africa/Mbabane", "Africa/Mogadishu", "Africa/Monrovia", "Africa/Nairobi", "Africa/Ndjamena", "Africa/Niamey", "Africa/Nouakchott", "Africa/Ouagadougou", "Africa/Porto-Novo", "Africa/Sao_Tome", "Africa/Tripoli", "Africa/Tunis", "Africa/Windhoek", "America/Adak", "America/Anchorage", "America/Anguilla", "America/Antigua", "America/Araguaina", "America/Argentina/Buenos_Aires", "America/Argentina/Catamarca", "America/Argentina/Cordoba", "America/Argentina/Jujuy", "America/Argentina/La_Rioja", "America/Argentina/Mendoza", "America/Argentina/Rio_Gallegos", "America/Argentina/Salta", "America/Argentina/San_Juan", "America/Argentina/San_Luis", "America/Argentina/Tucuman", "America/Argentina/Ushuaia", "America/Aruba", "America/Asuncion", "America/Atikokan", "America/Bahia", "America/Bahia_Banderas", "America/Barbados", "America/Belem", "America/Belize", "America/Blanc-Sablon", "America/Boa_Vista", "America/Bogota",, "Pacific/Marquesas", "Pacific/Midway", "Pacific/Nauru", "Pacific/Niue", "Pacific/Norfolk", "Pacific/Noumea", "Pacific/Pago_Pago", "Pacific/Palau", "Pacific/Pitcairn", "Pacific/Pohnpei", "Pacific/Ponape", "Pacific/Port_Moresby", "Pacific/Rarotonga", "Pacific/Saipan", "Pacific/Tahiti", "Pacific/Tarawa", "Pacific/Tongatapu", "Pacific/Truk", "Pacific/Wake", "Pacific/Wallis"]

আপনার প্রয়োজন হতে পারে আরও কয়েকটি তথ্য রয়েছে:

var isDaylightSavingTime: Bool { return TimeZone.current.isDaylightSavingTime(for: Date()) }
print(isDaylightSavingTime) // true (in effect)

var daylightSavingTimeOffset: TimeInterval { return TimeZone.current.daylightSavingTimeOffset() }
print(daylightSavingTimeOffset)  // 3600 seconds (1 hour - daylight savings time)


var nextDaylightSavingTimeTransition: Date? { return TimeZone.current.nextDaylightSavingTimeTransition }    //  "Feb 18, 2017, 11:00 PM"
 print(nextDaylightSavingTimeTransition?.description(with: .current) ?? "none")
nextDaylightSavingTimeTransition   // "Saturday, February 18, 2017 at 11:00:00 PM Brasilia Standard Time\n"

var nextDaylightSavingTimeTransitionAfterNext: Date? {
    guard
        let nextDaylightSavingTimeTransition = nextDaylightSavingTimeTransition
        else { return nil }
    return TimeZone.current.nextDaylightSavingTimeTransition(after: nextDaylightSavingTimeTransition)
}

nextDaylightSavingTimeTransitionAfterNext  //   "Oct 15, 2017, 1:00 AM"

টাইমজোন - অ্যাপল বিকাশকারী সুইফ্ট ডকুমেন্টেশন


পিছনে লাফানোর জন্য দুঃখিত তবে সংক্ষিপ্ত বিবরণ ছাড়াই নাম মুদ্রণের কোনও উপায় কি আপনি জানেন? আমি দস্তাবেজগুলি সন্ধান করেছি কিন্তু কেবলমাত্র সময় সি জোনওথনামের জন্য সন্ধান করেছি? ধন্যবাদ।
কিথ

1
অবশ্যই। আমি এটি পোস্ট করেছি। এটি প্রায় একই তবে উদ্দীপনা চিহ্ন ছাড়া কারণ এটি কোনও .চ্ছিক নয়। ঘোষণা SWIFT var সংক্ষেপ: স্ট্রিং? {get} এবং ঘোষণা SWIFT var নাম: স্ট্রিং {get} // প্রশ্ন চিহ্ন ছাড়াই "?"
লিও ডাবাস

1
ফ্যান্টাস্টিক! আমি চেষ্টা করছিলাম। বিবরণ, আমি .নের নাম ভাবিনি। এই সব সত্যিই সহায়ক হবে।
কিথ

1
ঠিক আছে, আমি এটি সন্ধান করেছি - আপনি কোথায় আছেন সে সম্পর্কে ডেটা পেতে আইফোনের ক্যারিয়ার পরিষেবা প্রয়োজন needs আপনি যদি এই সমস্তটি বন্ধ করে দেন - আপনি শহর এবং দেশ পাবেন না। অথবা আপনি যদি অন্য কোনও দেশে ঘোরাঘুরি করছেন। এই সমস্ত কান্ডা চুষে।
সোবারম্যান

1
আমাদের স্ট্যাকওভারফ্লো ঠিক এই কারণেই! একটি টন সাথীকে ধন্যবাদ :)
তিলক ম্যাডি

20

এক্সকোড 8.2.1 • সুইফ্ট 3.0.2

Locale.availableIdentifiers
Locale.isoRegionCodes
Locale.isoCurrencyCodes
Locale.isoLanguageCodes
Locale.commonISOCurrencyCodes

Locale.current.regionCode           // "US"
Locale.current.languageCode         // "en"
Locale.current.currencyCode         // "USD"
Locale.current.currencySymbol       // "$"
Locale.current.groupingSeparator    // ","
Locale.current.decimalSeparator     // "."
Locale.current.usesMetricSystem     // false

Locale.windowsLocaleCode(fromIdentifier: "pt_BR")                   //  1,046
Locale.identifier(fromWindowsLocaleCode: 1046) ?? ""                // "pt_BR"
Locale.windowsLocaleCode(fromIdentifier: Locale.current.identifier) //  1,033 Note: I am in Brasil but I use "en_US" format with all my devices
Locale.windowsLocaleCode(fromIdentifier: "en_US")                                   // 1,033
Locale.identifier(fromWindowsLocaleCode: 1033) ?? ""                                // "en_US"

Locale(identifier: "en_US_POSIX").localizedString(forLanguageCode: "pt")            // "Portuguese"
Locale(identifier: "en_US_POSIX").localizedString(forRegionCode: "br")              // "Brazil"
Locale(identifier: "en_US_POSIX").localizedString(forIdentifier: "pt_BR")           // "Portuguese (Brazil)"

TimeZone.current.localizedName(for: .standard, locale: .current) ?? ""              // "Brasilia Standard Time"
TimeZone.current.localizedName(for: .shortStandard, locale: .current) ?? ""         // "GMT-3
TimeZone.current.localizedName(for: .daylightSaving, locale: .current) ?? ""        // "Brasilia Summer Time"
TimeZone.current.localizedName(for: .shortDaylightSaving, locale: .current) ?? ""   // "GMT-2"
TimeZone.current.localizedName(for: .generic, locale: .current) ?? ""               // "Brasilia Time"
TimeZone.current.localizedName(for: .shortGeneric, locale: .current) ?? ""          // "Sao Paulo Time"

var timeZone: String {
    return TimeZone.current.localizedName(for: TimeZone.current.isDaylightSavingTime() ?
                                               .daylightSaving :
                                               .standard,
                                          locale: .current) ?? "" }

timeZone       // "Brasilia Summer Time"

11

আপনি বর্তমান সময় অঞ্চল পেতে কোডের নীচে ব্যবহার করতে পারেন

 func getCurrentTimeZone() -> String{

         return TimeZone.current.identifier

  }

  let currentTimeZone = getCurrentTimeZone()
   print(currentTimeZone)

কেন সহজভাবে নয়TimeZone.current.identifier
লিও ডাবাস

@ লিওডাবাস, আপনি টাইমজোন.কমের.অন্টিফায়ারও ব্যবহার করতে পারেন। তাদের মধ্যে কোনও পার্থক্য নেই। আমি কেবল স্ট্রিং রিটার্ন টাইপের সাথে
এটিকে

@ লিও ডাবস, আপনি ঠিক বলেছেন। এটা আমার ভুল. এটি সন্ধানের জন্য ধন্যবাদ।
পঙ্কজ জাঙ্গিদ

2
NSTimeZone *timeZone = [NSTimeZone localTimeZone];
NSString *tzName = [timeZone name];

নামটি "অস্ট্রেলিয়া / সিডনি", বা "ইউরোপ / লিসবন" এর মতো কিছু হবে।

যেহেতু মনে হচ্ছে আপনি কেবলমাত্র এই মহাদেশটির বিষয়ে চিন্তা করছেন তাই আপনার প্রয়োজন হতে পারে।


5
সুইফ্ট 3 সমতুল্য টাইমজোন.কমের.অন্টিফায়ার
আনন্দ

-1

সুইফট 4, 4.2 এবং 5

var timeZone : String = String()

override func viewDidLoad() {
    super.viewDidLoad()
    timeZone = getCurrentTimeZone()
    print(timeZone)
}

func getCurrentTimeZone() -> String {
        let localTimeZoneAbbreviation: Int = TimeZone.current.secondsFromGMT()
        let items = (localTimeZoneAbbreviation / 3600)
        return "\(items)"
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.