【发布时间】:2017-12-30 16:23:22
【问题描述】:
我有一个这样的json
[
{
"place": "somewhere",
"dateStart": "2017-02-25+01:00",
"name": "name of the event",
"dateEnd": "2017-06-18+02:00",
"region": "region 1";
},
{
"place": "another place",
"dateStart": "2017-03-25+01:00",
"name": "another name",
"dateEnd": "2017-08-18+02:00",
"region": "region 2";
},
...
]
“dateStart”和“dateEnd”的格式为String
我用 swiftyjson 解析了它
let fileManager = FileManager.default
let documentsPath = try! fileManager.url(for:.documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
let filePath = documentsPath.appendingPathComponent("events.json")
let url = filePath
let data = try? Data(contentsOf: url)
if data != nil {
stringJson = JSON(data: data!)
}
guard let json = stringJson.array else { return }
我可以过滤这个数组:
let filteredArrayByRegion = json.filter{$0["region"].string == "region name"}
但现在我想通过“dateEnd”过滤数组,并且我希望“dateEnd”大于“today”的记录。
我知道我必须将字符串 ["dateEnd"].string 转换为日期,但我无法创建闭包来过滤数组。
谁能让我走上正轨?
提前谢谢你
【问题讨论】:
-
将字符串解析为日期,并与今天进行比较。
-
我尝试:
codelet dateFormatter = DateFormatter() dateFormatter.dateFormat = "yyyy-MM-dd HH:mm" 然后:codelet eventiRegionaliPerData = json.filter { json 作为回报dateFormatter.date(来自:json[“eventoDataFine”].string!)! >= 日期() } -
那是什么问题?
-
@GiuseppeSala 不要在 cmets 中发布代码。请edit您的问题提供所有相关信息。
-
"我想要
dateEnd大于 'today' 的记录" ...因此,如果您所在位置的今天日期为 "2017-07-24+06:00",则为 " 2017-07-24+07:00”要“比今天更大”?看到日期字符串的时区调整有点不寻常(当然,对于日期时间字符串,但对于日期字符串不太常见)。或者您是否想将它们视为“与今天相同”,尽管时区发生了变化?还是在您的示例中+01:00不是时区更改,而是小时和分钟?如果是这样,那么在该字符串中使用+而不是T会很奇怪。那么这些日期字符串是什么时区?