我真正想做的就是使用strftime(“%x”)以正确的顺序格式化日期。在大多数平台上,只需调用setlocale(“”)就可以了。在iPhone iOS C上,我不断收到!@#$美国日期。
那么,iPhone iOS C不支持语言环境吗?
答案 0 :(得分:0)
不。 setlocale()
和strftime()
在iPhone iOS C中不起作用,只有NULL。
并且ANSI C localeconv()
在iPhone iOS C中不起作用:
struct lconv *localeconv(void);
此外,获取用户名的标准Unix方式在Android中也不起作用。
char *p = getenv("USER");
因此,您需要使用Swift端来获取语言环境信息。
let RFC3339DateFormatter = DateFormatter()
RFC3339DateFormatter.timeZone = TimeZone(secondsFromGMT: 0)
RFC3339DateFormatter.dateFormat = "yyyy-MM-dd"
let LocaleDateFormatter = DateFormatter()
LocaleDateFormatter.locale = Locale(identifier: Locale.preferredLanguages[0]) //NSLocale.current.identifier)
LocaleDateFormatter.dateStyle = .short
let DateString = LocaleDateFormatter.string(from: RFC3339DateFormatter.date(from: "3333-11-22")!)
let LocaleCountry = NSLocale.current.regionCode
let LocaleLanguage = Locale.preferredLanguages[0]
let LocaleCurrency = NSLocale.current.currencyCode
let LocaleShortDateTimePattern = DateString
let LocaleDecimalSeparator = NSLocale.current.decimalSeparator
let LocaleThousandSeparator = NSLocale.current.groupingSeparator
let LocaleThousandGrouping = "3;0",/* ThousandGrouping locale looks not be implemented by Apple*/
let LocaleNegativePrefix = NumberFormatter().negativePrefix
let LocaleNegativeSuffix = NumberFormatter().negativeSuffix
let Operator = NSUserName()
然后要在C代码中使用,请使用Swift语言环境数据作为参数调用C函数并将其存储在其中。