Формирование даты, добавление дней к дате

Вот мой первый вопрос;

import Foundation 

let date1 = Date()
let date2 = Date().addingTimeInterval(3600)

if date1 == date2
{
          print("equals")
}
else if date1 > date2
{
          print("date1 is bigger")
}
else if date1 < date2
{
          print("date2 is bigger")
}

Он дает ниже вывод, если я напишу print ("date1") или print ("date2")

2018-09-10 08:56:49 +0000

Я хотел бы написать тот же пример, но date1 и date2 должны включать эти 2 свойства:

формат: "dd.MM.yyyy"

язык: "tr_TR"

Кроме того, вот мой второй вопрос:

let date2 = Date().addingTimeInterval(3600)

Как известно, это 3600 добавочных часов в час. Как я могу добавить один день? 24 * 3600? Есть ли кратчайший путь?

stackoverflow.com/a/5067868/1891327
Shamas S 10.09.2018 11:38

Обратите внимание, что 24*3600 не всегда полный рабочий день. Иногда бывает летнее / зимнее время, и следующий день в тот же час может быть 23 или 25 часов от текущего времени. Найдите Calendar, чтобы добавить день. "Я хотел бы написать тот же пример, но date1 и date2 должны включать эти 2 свойства:" Найдите DateFormatter.

Larme 10.09.2018 11:39

Спасибо за эти подробности.

mannyCalavera 10.09.2018 12:23

Возможный дубликат Как добавить 1 день к NSDate?

Kuldeep 10.09.2018 12:55
1
4
223
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Пытаться

extension Date {
  func addDays(_ days: Int) -> Date {
    Calendar.autoupdatingCurrent.date(byAdding: .day, value: days, to: self)!
  }
}

Попробуй это

let today = Date() // OR your date here
let tomorrow = Calendar.current.date(byAdding: .day, value: 1, to: today)
let yesterday = Calendar.current.date(byAdding: .day, value: -1, to: today)
Ответ принят как подходящий

Как сказал @Larme, вы можете изучить Calendar.

var dateComponents = DateComponents()
dateComponents.day = 1
guard let date = Calendar.current.date(byAdding: dateComponents, to: Date()) else {  // Adding date components to current day.
   fatalError("date not found")
}
let dateFormatter = DateFormatter()
dateFormatter.dateStyle = .short // dd.MM.yyyy
dateFormatter.locale = Locale(identifier: "tr_TR") // Your preferred locale
let dateWithLocale = dateFormatter.string(from: date)
print(date)

Ваше сравнение может быть выполнено с помощью объектов Date. Только когда вам нужно распечатать его или использовать как String, вам нужно будет выполнить форматирование.

Уважаемый, @Rakesha Shastri, у меня вопрос: допустим, у меня есть такая переменная: var birthday: Date? = nil Могу ли я установить текущее значение даты для переменной this birtday. Но в кратком формате. (Не в виде строки. Вы знаете, день рождения указывается в типе «Дата») Спасибо.

mannyCalavera 10.09.2018 12:28

@mannyCalavera У экземпляра Date нет формата. Форматирование актуально только при преобразовании в строку. Всякий раз, когда вы используете даты для отображения, вы всегда конвертируете их в строку перед ее использованием. Это когда вы выполняете часть форматирования с помощью DateFormatter. Для сравнения можно использовать объекты даты. Например, предположим, что у вас есть 2 целых числа a и b (1 и 2). Во время сравнения не имеет значения, хранится ли он как Double, Float или Int, если значение не изменилось. Но когда вы его отображаете, вы конвертируете его в определенный формат. например: 1.00 с использованием строкового форматирования.

Rakesha Shastri 10.09.2018 12:33

Понимать. Большое спасибо.

mannyCalavera 10.09.2018 12:38

Когда мы сможем увидеть эту фатальную ошибку («дата не найдена»)? Я имею в виду, есть ли возможность увидеть эту область фатальной ошибки? Он получает текущую дату, а затем добавляет один день. В каком случае мы видим эту область фатальной ошибки. Мне просто интересно, дорогой @Rakesha Shastri

mannyCalavera 10.09.2018 12:56

Как ссылка ниже? stackoverflow.com/questions/5067785/…

mannyCalavera 10.09.2018 12:57

@mannyCalavera Хм ... хороший вопрос. Я не могу придумать ни одного сразу, я просто заключил его в охранное заявление, потому что дата, возвращаемая Calendar, была необязательной.

Rakesha Shastri 10.09.2018 13:01

@mannyCalavera Я просто попытался вычесть 100000000 из текущей даты, но он все равно вернул "\ n" в качестве значения даты. Думаю, это что-то вроде свойства текста UITextField.

Rakesha Shastri 10.09.2018 13:07

Спасибо @Rakesha Shastri

mannyCalavera 10.09.2018 15:15

Другие вопросы по теме