【问题标题】:How to check the date string contains millisecond in it or not in iOS [closed]如何在iOS中检查日期字符串是否包含毫秒[关闭]
【发布时间】:2014-12-15 09:20:56
【问题描述】:

在我的应用程序中的一种情况下,我得到日期字符串说 12/15/2014 13:23:45 (MM/dd/yyyy HH:mm:ss) 和 12/15/2014 13:23:45:928 ( MM/dd/yyyy HH:mm:ss:SSS) 那就是我得到一个毫秒的日期字符串和一个没有毫秒的日期字符串。如果毫秒存在,任何人都可以通过将布尔值分配给 true 来帮助我检查给定字符串中是否存在毫秒,并在毫秒不存在时将布尔值分配给 false。提前致谢

【问题讨论】:

    标签: ios iphone datetime nsdate nsdateformatter


    【解决方案1】:

    布尔值是您的主要目标吗?或者您是否需要一个 NSDate 并想弄清楚要使用哪个 NSDateFormatter?

    在这两种情况下,您都可以使用 NSDateFormatter 进行转换。只有其中一个会起作用,另一个会返回 nil,因为它的 dateFormat 是错误的。

    由于您没有指定语言,因此我编写了该代码的 Swift 版本:

    var date: NSDate?
    var hasMilliSeconds = false
    
    
    let string = "12/15/2014 13:23:45:928"
    //let string = "12/15/2014 13:23:45"
    
    
    let dfWithMilliSeconds = NSDateFormatter()
    dfWithMilliSeconds.dateFormat = "MM/dd/yyyy HH:mm:ss:SSS"
    if let d = dfWithMilliSeconds.dateFromString(string) {
        date = d
        hasMilliSeconds = true
    }
    
    let dfWithoutMilliSeconds = NSDateFormatter()
    dfWithoutMilliSeconds.dateFormat = "MM/dd/yyyy HH:mm:ss"
    if let d = dfWithoutMilliSeconds.dateFromString(string) {
        date = d
        hasMilliSeconds = false
    }
    
    println("Has milliseconds: \(hasMilliSeconds)")
    println("Date \(date?.descriptionWithLocale(NSLocale.currentLocale()))")
    

    【讨论】:

    • 请注意,NSDateFormatter 的创建成本很高,因此如果要频繁调用此代码,则最好缓存格式化程序。
    • 是的,这只是简单的实现。在现实世界的应用程序中,只有第一次尝试失败时,您才会执行第二次尝试。并且您会以大​​多数时间只执行第一项检查的方式对这两项检查进行排序。
    【解决方案2】:

    将您的日期转换为字符串并计算字符串的长度并检查长度是否小于或等于您的无毫秒长度,那么它不是毫秒,否则有毫秒

    【讨论】:

      【解决方案3】:

      您将 NSDateFormatter 设置为“dd/mm/yyyy hh:mm:ss:SSS” 然后将字符串转换为日期,如果你得到一些结果,请确保字符串在字符串中包含毫秒部分,但如果你得到 nil 作为结果,则确保字符串不包含毫秒部分 代码如下

       NSString *str1 = @"12/15/2014 13:23:45:928";
      
      NSDateFormatter *formatter=[[NSDateFormatter alloc] init];
      [formatter setTimeZone:[NSTimeZone localTimeZone]];
      
      [formatter setCalendar:[[NSCalendar alloc] initWithCalendarIdentifier:@"gregorian"]];
      NSLocale *local=[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
      [formatter setLocale:local];
      [formatter setDateFormat:@"dd/mm/yyyy hh:mm:ss:SSS"];
      NSDate *date = [formatter dateFromString:str1];
      

      如果觉得有用,请采纳。

      【讨论】:

        【解决方案4】:

        尝试实现以下代码

        NSString *stringDate = @"12/15/2014 13:12:45:967";
        
        NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
        [dateFormat setDateFormat:@"MM/dd/yyyy HH:mm:ss:SSS"];
        
        NSDate *newDate = [dateFormat dateFromString:stringDate];
        
        if (newDate == nil){
            NSLog(@"Miliseconds not found");
        }else{
            [dateFormat setDateFormat:@"SSS"];
            NSLog(@"Miliseconds found %@",[dateFormat stringFromDate:newDate]);
        
        }
        

        【讨论】:

          【解决方案5】:

          计算字符串的长度并找出是否存在毫秒。另外,你可以数一数其中的冒号数并找出答案。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-11-08
            • 1970-01-01
            • 2017-10-21
            • 2013-02-21
            • 2015-09-12
            • 2019-03-16
            • 1970-01-01
            相关资源
            最近更新 更多