Swift에서 오늘, 어제, 이번 주, 지난주, 이달, 지난달의 대응 날짜를 얻었습니다.
코드로 바로 올라갔어요.
1. 현재 시간 얻기
// MARK:
// type “yyyyMMdd” “yyyy-MM-dd”
class func nowTime(_ type: String?) -> String {
let currentDate = Date()
let formatter = DateFormatter()
formatter.dateFormat = type ?? "yyyyMMdd"
let time = formatter.string(from: currentDate)
return time
}
2. 현재 시간 가져오기 전날(후일)
이 방법은 오늘과 비교되는 임의의 하루의 시간을 얻을 수 있다
// MARK:
// nowDay
class func getLastDay(_ nowDay: String) -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyyMMdd"
// date
let date = dateFormatter.date(from: nowDay)
let lastTime: TimeInterval = -(24*60*60) // ,
// let nextTime: TimeInterval = 24*60*60 // ,
let lastDate = date?.addingTimeInterval(lastTime)
let lastDay = dateFormatter.string(from: lastDate!)
return lastDay
}
위의 코드에 해당하는 iOS 코드는 다음과 같습니다.
//
- (NSString *)getAgoTime:(NSString *)second
{
//
NSDate * date = [NSDate date];
NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
// ( )( , )
NSTimeInterval time = [second intValue];//
// (-: ( ), , ( ))
NSDate * lastYear = [date dateByAddingTimeInterval:-time];
//
NSString * startDate = [dateFormatter stringFromDate:lastYear];
return startDate;
}
3. 월요일과 일요일의 날짜 얻기
// MARK:
class func getWeekTime(_ dateStr: String) -> Array {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyyMMdd"
let nowDate = dateFormatter.date(from: dateStr)
let calendar = Calendar.current
let comp = calendar.dateComponents([.year, .month, .day, .weekday], from: nowDate!)
//
let weekDay = comp.weekday
//
let day = comp.day
//
var firstDiff: Int
var lastDiff: Int
// weekDay = 1;
if (weekDay == 1) {
firstDiff = -6;
lastDiff = 0;
} else {
firstDiff = calendar.firstWeekday - weekDay! + 1
lastDiff = 8 - weekDay!
}
// ( )
var firstDayComp = calendar.dateComponents([.year, .month, .day], from: nowDate!)
firstDayComp.day = day! + firstDiff
let firstDayOfWeek = calendar.date(from: firstDayComp)
var lastDayComp = calendar.dateComponents([.year, .month, .day], from: nowDate!)
lastDayComp.day = day! + lastDiff
let lastDayOfWeek = calendar.date(from: lastDayComp)
let firstDay = dateFormatter.string(from: firstDayOfWeek!)
let lastDay = dateFormatter.string(from: lastDayOfWeek!)
let weekArr = [firstDay, lastDay]
return weekArr;
}
위의 코드에 해당하는 iOS 코드는 다음과 같습니다.
#pragma mark -
+ (NSString *)getWeekTime:(NSString *)dateStr
{
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd"];
NSDate *nowDate = [formatter dateFromString:dateStr];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *comp = nil;
if (DEV_VER >= 8.0) {
comp = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitWeekday | NSCalendarUnitDay fromDate:nowDate];
} else {
comp = [calendar components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSWeekdayCalendarUnit | NSDayCalendarUnit fromDate:nowDate];
}
//
NSInteger weekDay = [comp weekday];
//
NSInteger day = [comp day];
//
long firstDiff,lastDiff;
// weekDay = 1;
if (weekDay == 1) {
firstDiff = -6;
lastDiff = 0;
} else {
firstDiff = [calendar firstWeekday] - weekDay + 1;
lastDiff = 8 - weekDay;
}
// ( )
NSDateComponents *firstDayComp = nil;
NSDateComponents *lastDayComp = nil;
if (DEV_VER >= 8.0) {
firstDayComp = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:nowDate];
} else {
firstDayComp = [calendar components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit fromDate:nowDate];
}
[firstDayComp setDay:day + firstDiff];
NSDate *firstDayOfWeek = [calendar dateFromComponents:firstDayComp];
if (DEV_VER >= 8.0) {
lastDayComp = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:nowDate];
} else {
lastDayComp = [calendar components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit fromDate:nowDate];
}
[lastDayComp setDay:day + lastDiff];
NSDate *lastDayOfWeek = [calendar dateFromComponents:lastDayComp];
NSString *firstDay = [formatter stringFromDate:firstDayOfWeek];
NSString *lastDay = [formatter stringFromDate:lastDayOfWeek];
NSString *weekStr = [NSString stringWithFormat:@"%@ %@", firstDay, lastDay];
return weekStr;
}
4. 월의 시작 및 종료 날짜 가져오기
// MARK:
// nowDay
class func startOfCurrentMonth(_ nowDay: String) -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyyMMdd"
let nowDayDate = dateFormatter.date(from: nowDay)
let calendar = Calendar.current
let components = calendar.dateComponents([.year, .month], from: nowDayDate!)
let startOfMonth = calendar.date(from: components)
let day = dateFormatter.string(from: startOfMonth!)
return day
}
// MARK:
class func endOfCurrentMonth(_ nowDay: String, returnEndTime:Bool = false) -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyyMMdd"
let nowDayDate = dateFormatter.date(from: nowDay)
let calendar = Calendar.current
var components = DateComponents()
components.month = 1
if returnEndTime {
components.second = -1
} else {
components.day = -1
}
//startOfCurrentMonth
let currentMonth = calendar.dateComponents([.year, .month], from: nowDayDate!)
let startOfMonth = calendar.date(from: currentMonth)
let endOfMonth = calendar.date(byAdding: components, to: startOfMonth!)
let day = dateFormatter.string(from: endOfMonth!)
return day
}
5. 지난주의 날짜와 지난달의 날짜를 얻는다
물론 상술한 방법에 따라 이번 주(이달)의 첫날을 얻은 다음에 전날, 즉 지난주(지난달)의 마지막 날을 얻은 다음에 그 주(그 달)의 날짜를 다시 얻는다.
위에서 사용한 격식은 모두
yyyyMMdd
의 격식으로 사용하는 과정에서 모두가 필요로 하는 격식으로 설정할 수 있다.또한 상기 모든nowDay
는 당신이 입력한 계산이 필요한 날의 날짜 형식String
유형입니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.