Swift Calendar、指定LocalでshortMonthSymbols使用

お題

日本語Local環境で「Nov」と変換したい。

Calendar.current.shortMonthSymbols[10]

11月と表示される。

解決方法

var calendar = Calendar.current
calendar.locale = Locale(identifier: "en")
calendar. shortMonthSymbols[10]

複数箇所で使用したい為、Extension

import Foundation

extension Calendar {
    static func monthSymbols(local: Locale) -> [String] {
        var calendar = Calendar.current
        calendar.locale = local
        return calendar.monthSymbols
    }

    static func standaloneMonthSymbols(local: Locale) -> [String] {
        var calendar = Calendar.current
        calendar.locale = local
        return calendar.standaloneMonthSymbols
    }

    static func shortMonthSymbols(local: Locale) -> [String] {
        var calendar = Calendar.current
        calendar.locale = local
        return calendar.shortMonthSymbols
    }

    static func shortStandaloneMonthSymbols(local: Locale) -> [String] {
        var calendar = Calendar.current
        calendar.locale = local
        return calendar.shortStandaloneMonthSymbols
    }
}

使用例

Calendar.shortMonthSymbols(local: Locale(identifier: "en"))[10]

Swift

Posted by shi-n