Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 如何检查返回的内容是字符串还是日期字符串?_String_Swift3 - Fatal编程技术网

String 如何检查返回的内容是字符串还是日期字符串?

String 如何检查返回的内容是字符串还是日期字符串?,string,swift3,String,Swift3,在我的应用程序中,api可以返回字符串或日期作为字符串。我需要先检查api是否返回日期。如果不是日期,只需用字符串填充字段即可。如果是日期,请在填充字段之前进行转换。转换和填充字段部分是我计算出来的,但是我如何判断它是以字符串还是字符串形式返回日期呢?这是api返回的结果: data?.data?.nextAvailability 所以我需要它是这样的 if data?.data?.nextAvailability is a string { // do something } e

在我的应用程序中,api可以返回字符串或日期作为字符串。我需要先检查api是否返回日期。如果不是日期,只需用字符串填充字段即可。如果是日期,请在填充字段之前进行转换。转换和填充字段部分是我计算出来的,但是我如何判断它是以字符串还是字符串形式返回日期呢?这是api返回的结果:

data?.data?.nextAvailability
所以我需要它是这样的

if data?.data?.nextAvailability is a string { 
    // do something 
} else if data?.data?.nextAvailability is a date as a string {
    // do this 
}

你可以这样做:

let string = data?.data?.nextAvailability

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"

guard let date = dateFormatter.date(from: string) else {
        print("not a date") // And do what you need to do
        return
    }
// is a date... do what you need to do with a date.
print(date)

要明确的是,无论发生什么,它都会返回一个字符串,只是格式可以更改?是的,无论返回一个字符串是什么实例,它都会返回一个类似“选择一个”的字符串,或者如果它是一个日期“2017-06-09T15:30:00.000Z”。然后我将日期字符串转换为“June 9,11:30 am”,但我不确定将在let string=“2017-06-09T15:30:00.000Z”区域中放置什么字符串。它从api返回为“data?.data?.nextAvailability”,只需插入您得到的字符串。更新的答案。我不得不改变一些事情,但这成功了,谢谢!