#ios #swift #datetime
#iOS #swift #дата и время
Вопрос:
У меня есть кнопка с действием, но перед выполнением действия мне нужно проверить последнее сообщение пользователя, если оно было до 12 часов или нет, если да, я не разрешу публиковать, если да, я буду обработан для публикации
Я пытался использовать этот код, но, похоже, что-то не так! Я изменил его в api, чтобы возвращать числа, и появляется та же ошибка!
@IBAction func SubmitAd(_ sender: Any) {
//LastPost:"time": "2021-01-30 18:29:05"
if LastPost < "12" {
print("You Can not Post now")
} else {
if (TitleLBL.text!.isEmpty || MessageLBL.text!.isEmpty || PhotoArray.count==0 || sectionName.isEmpty){
ShowFillAlert()
}else{
ShowGuideAlert()
}
}
}
ошибка заключается
в том, что двоичный оператор ‘<‘ не может быть применен к двум операндам ‘[String: String]’
мой php api
<?php header('Access-Control-Allow-Origin: *'); ?>
<?php
require_once '../config/app.php';
require_once '../config/database.php';
$mob=$_REQUEST["mob"];
$se=array("status"=>"","data"=>array());
$userEsxist = $mysqli->query("SELECT time FROM `requests` where phone = '$mob' ORDER BY `requests`.`time` DESC
");
if(!$userEsxist->num_rows){
$se["status"]=false;
}
else
{
$foundUser = $userEsxist->fetch_assoc();
$se["status"]=true;
$se["data"]=$foundUser;
}
echo json_encode($se);
?>
Комментарии:
1. «до 12 часов», что это значит? Менее 12 часов или до 12 часов? И какой тип LastPost?
2. @JoakimDanielson да, я имею в виду, что если пользователь опубликовал сообщение за последние 12 часов с момента его последнего сообщения, LastPost — это дата и время, и формат тоже зависит от вопроса
3. datetime не является типом swift, поэтому я снова спрашиваю, какой тип LastPost или datetime — это какой-то пользовательский тип?
4. @JoakimDanielson Последнее сообщение является строкой
Ответ №1:
Вот решение, которое я предлагаю. Сначала он преобразует строку в дату с помощью DateFormatter. Затем он добавляет 12 часов к дате. Наконец, он проверяет, является ли новая дата (где было добавлено 12 часов) больше (читается после) текущей даты.
@IBAction func SubmitAd(_ sender: Any) {
let dateFormatter = DateFormatter()
// Setting date formatter to read dates like "2021-01-30 18:29:05".
dateFormatter.dateFormat = "y-M-d HH:mm:ss"
let postDate = dateFormatter.date(from: LastPost)!
let calendar = Calendar.current
// Adding 12 hours to the post date.
let newPostAllowedDate = calendar.date(byAdding: .hour, value: 12, to: postDate)!
//LastPost Time Format in Database: 2021-01-30 18:29:05.
if newPostAllowedDate > Date() {
print("You Can not Post now")
} else {
if (TitleLBL.text!.isEmpty || MessageLBL.text!.isEmpty || PhotoArray.count==0 || sectionName.isEmpty){
ShowFillAlert()
}else{
ShowGuideAlert()
}
}
}
Комментарии:
1. Я изменил свой api, чтобы возвращать числа, но появляется та же ошибка
2. ??? Почему вы изменили его, чтобы возвращать числа? Я не просил вас ничего менять, оставьте все как раньше, и это сработает!
3. Да, это сработало, спасибо, но я тоже хочу изменить значение из api, возможно, позже я изменю его на 8 часов вместо 12 часов, поэтому @Titouan
4. @jacob вы не можете полностью изменить свой вопрос таким образом, это делает все существующие ответы и комментарии неактуальными в худшем случае и грубо по отношению к тем, кто пытался вам помочь
5. @JoakimDanielson нет, он ответил на мой вопрос, и я возвращаюсь к старому коду и вопросу, извините, парень