我试图将我的URLResponse的最后修改属性作为NSDate获取。 我按照以下说明进行操作:
How can I convert string date to NSDate?
Convert String to NSDate in Swift
From String to NSDate in Swift
但没有一个工作..我从URLResponse-Object以#34;星期一,2015年10月19日05:57:12 GMT"
的形式正确收到日期作为字符串我需要将此String转换为NSDate,以便能够将其与NSDate形式的localDate进行比较:2015-10-19 05:57:12 UTC
我也尝试了不同的日期格式,但它没有任何区别。
我目前的代码如下:
//The serverDate needs to match the localDate which is a
//NSDate? with value: 2015-10-19 05:57:12 UTC
if let httpResp: NSHTTPURLResponse = response as? NSHTTPURLResponse {
let date = httpResp.allHeaderFields["Last-Modified"] as! String //EXAMPLE: "Mon, 19 Oct 2015 05:57:12 GMT"
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss ZZZ"
dateFormatter.timeZone = NSTimeZone(abbreviation: "UTC")
let serverDate = dateFormatter.dateFromString(date) as NSDate?
//conversion always fails serverDate == nil
println("ServerDate: \(serverDate)")
}
任何人都可以解释转换失败的原因吗?我可以尝试转换我的日期吗?
答案 0 :(得分:3)
我解决了......
这是一个逻辑问题,因为我想为一个日期解析一个字符串,我必须指定输入dateFormat来接收一个正确的日期:
从服务器输入:String =“星期一,2015年10月19日05:57:12 GMT”
以下格式为日期:“EEEE,dd LLL yyyy HH:mm:ss zzz”(http://userguide.icu-project.org/formatparse/datetime)
- >工作代码:
if let httpResp: NSHTTPURLResponse = response as? NSHTTPURLResponse {
//EXAMPLE: "Mon, 19 Oct 2015 05:57:12 GMT"
let date = httpResp.allHeaderFields["Last-Modified"] as! String
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "EEEE, dd LLL yyyy HH:mm:ss zzz"
serverDate = dateFormatter.dateFromString(date) as NSDate?
//serverDate is now: 2015-10-19 05:57:12 UTC
println("ServerDate: \(serverDate)")
}
答案 1 :(得分:3)
Swift 4,XCode 9:
let date = httpResponse.allHeaderFields["Date"] as! String
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "EEEE, dd LLL yyyy HH:mm:ss zzz"
let serverDate = dateFormatter.date(from: date)
改变为' HH'确实需要@MikeTaverne建议。
答案 2 :(得分:0)
就像评论所说,这段代码有效:
$dir = 'gifs';
$count = 1;
function listFolderFiles($dir){
global $count;
$results = new DirectoryIterator($dir);
echo '<ul>';
foreach($results as $fileInfo){
if($fileInfo->isFile()){
$oldFileName = $fileInfo->getPathname();
$newFileName = $fileInfo->getPath() . '/' . $count . '.gif';
//rename($oldFileName, $newFileName);
echo '<li>' . 'File Old: ' . $oldFileName . ' New: ' . $newFileName . '</li>';
$count++;
}
if($fileInfo->isDir() && !$fileInfo->isDot()){
echo '<li>' . 'Folder: ' . $fileInfo->getPathname() . '</li>';
listFolderFiles($fileInfo->getPathname());
}
}
echo '</ul>';
}
listFolderFiles($dir);
请注意接受的答案中的大写if let httpResp: NSHTTPURLResponse = response as? NSHTTPURLResponse {
// "Mon, 19 Oct 2015 05:57:12 GMT"
let headerDate = httpResp.allHeaderFields["Last-Modified"] as! String;
// converter
let dateFormatter = NSDateFormatter();
dateFormatter.dateFormat = "EEEE, dd LLL yyyy HH:mm:ss zzz";
// your answer
let serverDate = dateFormatter.dateFromString(headerDate) as NSDate?;
print("ServerDate: \(serverDate)")
}
而不是HH
。