如何使用MonoTouch以短时间格式将DateTime格式化为本地用户区域设置

如何使用MonoTouch以短时间格式将DateTime格式化为本地用户区域设置,datetime,xamarin.ios,nsdateformatter,Datetime,Xamarin.ios,Nsdateformatter,我尝试了多种方法,这是其中之一: System.Globalization.DateTimeFormatInfo format = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat; return dt.Value.ToString (format.ShortTimePattern); 这个问题是.NET 3.5返回一个“.”作为时间分隔符,这很可能是一个bug(因为我的挪威语言环境使用冒号): 我还看了

我尝试了多种方法,这是其中之一:

System.Globalization.DateTimeFormatInfo format = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat;      
return dt.Value.ToString (format.ShortTimePattern);
这个问题是.NET 3.5返回一个“.”作为时间分隔符,这很可能是一个bug(因为我的挪威语言环境使用冒号):

我还看了这里:

但是MT在NSDateFormatter上似乎没有setTimeStyle

有人有什么魔术吗

我的目标是输出:

晚上21:00/9:00

上午10:09/10:09


就像iPhone中的状态栏

我对mono源做了一个小研究,发现ShortTimePattern和TimeSeperator是(如果我错了,请mono大师纠正我)

所以,我尝试了只做iOS(而不是跨平台)的解决方案。即:

<代码>使用MangouCou.基金会; ... 公共覆盖无效ViewDidLoad() { base.ViewDidLoad(); var d=DateTime.Now; 控制台写入线(“NSDate:+GetCorrectTime(d)); } ... //仅限iOS(非跨平台) 公共字符串GetCorrectTime(日期时间d) { var nsdate=DateTimeToNSDate(d); var nsdateformatter=new.nsdateformatter(); nsdateformatter.DateStyle=NSDateFormatterStyle.None; nsdateformatter.TimeStyle=NSDateFormatterStyle.Short; 返回nsdateformatter.ToString(nsdate); } ... //DateTime至NSDate取自[该帖子][2] 公共静态NSDate DateTimeToNSDate(日期时间日期) { 返回NSDate.fromTimeIntervalenceReferenceDate((日期-(新日期时间(2001,1,1,0,0))).TotalSeconds); } 输出:

NSDate: 17:40
请注意,我将使用模拟器和“nn NO”(挪威尼诺尔斯克(挪威))语言环境对其进行测试。

尝试以下方法:

var formatter=new-NSDateFormatter();
formatter.TimeStyle=NSDateFormatterStyle.Short;
Console.WriteLine(formatter.ToString(DateTime.Now));
这就是说,Mono 2.12已经修复了挪威地区使用点/冒号作为时间分隔符的错误,因此当MonoTouch切换到使用Mono 2.12而不是Mono 2.10时(希望明年初),您也可以使用此托管替代方案:

Console.WriteLine(DateTime.Now.ToString(新文化信息(“nb编号”).DateTimeFormat.ShortTimePattern));

效果很好!我总是忘记很多obj-c方法都是MT中的属性:-)