从yyyy-MM-dd'T'HH创建日期:mm:ssZ

时间:2016-12-15 11:44:37

标签: ios nsdate

我有一个函数,我在其中传递日期:

createDate("2016-12-24'T'17:12:33.0500")

和定义

func createDate(fromString: String) -> NSDate {
    let dateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
    guard let date = dateFormatter.dateFromString(fromString) else {
        return NSDate()
    }
    return date
}

出于某种原因,我总是得到今天的日期而不是12月24日。

我做错了什么?

5 个答案:

答案 0 :(得分:1)

将dateformat更改为

dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSS"

并将输入更改为

createDate("2016-12-24T17:12:33.0500")

答案 1 :(得分:0)

这项工作对我很好,你可以试试

注意:您的传递日期字符串最后不包含Z. 你用

createDate("2016-12-24'T'17:12:33.0500")

试试这个

createDate("2016-12-24'T'17:12:33.050Z")//3 digit in millisecond part , not 4

 func createDate(dateString:String) -> NSDate {
    let dateFormater = NSDateFormatter()
    dateFormater.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
    dateFormater.locale = NSLocale.currentLocale()
    return dateFormater.dateFromString(dateString)!
}

答案 2 :(得分:0)

您的输入没有时区(例如:" + 000")但是四位数毫秒。要处理此问题,请将日期格式更改为:

"yyyy-MM-dd'T'HH:mm:ss.SSSS"

同时删除'周围的" T"在输入中:

"2016-12-24T17:12:33.0500"

合:

func createDate(fromString: String) -> Date {
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSS"
    guard let date = dateFormatter.date(from: fromString) else {
        return Date()
   }
   return date
}
createDate(fromString: "2016-12-24T17:12:33.0500")

答案 3 :(得分:0)

+ (NSDate*)fetchDateFromString:(NSString*)strDate {

    NSDateFormatter *df = [[NSDateFormatter alloc] init];
    [df setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZZ"];
    NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
    [df setLocale:usLocale];

    NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"UTC"];
    [df setTimeZone:gmt];
     NSDate *date = [df dateFromString:strDate];
    if (date) {
        return date;
    } else {
        NSLog(@"Attention!!!!!!!!!!!!!!!!!!!!! - Date format is not valid");
        [df setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZZZZ"];
        date = [df dateFromString:strDate];
        if (date) {
            return date;
        }
    }
    return nil;
}

答案 4 :(得分:0)

我在SWIFT 3.1中使用它

func convertDateStringToDate(longDate:String) - >串{

router.get('/:id/:slug', function(req, res, next) {
    var projectName = 'John Doe Project';
    req.breadcrumbs().add({name: projectName, url: '/url/to/project/'});
    res.render('projects/index', { title: 'Express', breadcrumbs: req.breadcrumbs()});
});