NSDateFormatter的dateFromString:在iOS 11中返回nil

时间:2017-11-06 07:55:25

标签: ios objective-c iphone ios11

我有这段代码:

NSDateFormatter *dateFormatter = [NSDateFormatter new];
dateFormatter.dateStyle = NSDateFormatterLongStyle;
dateFormatter.timeStyle = NSDateFormatterLongStyle;

NSDate *myDate = [dateFormatter dateFromString:@"2016-03-01 13:42:17"];

< iOS 11 ,找到了预期日期,但对于 iOS 11 (在iOS 11.1的iPhone中测试过),这将返回nil

我没有在Apple的文档中看到dateFromString:的任何API更改。怎么了?

2 个答案:

答案 0 :(得分:5)

基本上不要使用日期/时间样式来转换日期字符串。样式表示不同语言环境中的不同字符串。

使用固定日期格式,并将语言环境设置为en_US_POSIX

NSDateFormatter *dateFormatter = [NSDateFormatter new];
dateFormatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"];
dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";

NSDate *myDate = [dateFormatter dateFromString:@"2016-03-01 13:42:17"];

答案 1 :(得分:1)

@Vadian的答案也适用于Swift!谢谢! :)

这是Swift版本:

    private void Form1_DragOver(object sender, DragEventArgs e)
    {
        Point relative =  PointToClient(new Point(e.X, e.Y));
        if ((relative.X > label1.Left - 10) && (relative.X < label1.Left + label1.Width + 10)  && (relative.Y > label1.Top - 10) && (relative.Y < label1.Top + label1.Height + 10))
        {
            e.Effect = DragDropEffects.Copy;
        }
         else
        {
            e.Effect = DragDropEffects.None;
        }
    }