如何在Obj-C中将当前年份作为字符串?
另外,我如何使用另一年的值来比较它?
是否建议进行字符串比较或直接进行年度比较?
答案 0 :(得分:106)
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy"];
NSString *yearString = [formatter stringFromDate:[NSDate date]];
// Swift
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy"
let year = dateFormatter.string(from: Date())
您可以通过NSString
方法比较-isEqualToString:
。
答案 1 :(得分:34)
NSCalendar *gregorian = [NSCalendar calendarWithIdentifier:NSCalendarIdentifierGregorian];
NSInteger year = [gregorian component:NSCalendarUnitYear fromDate:NSDate.date];
注意:除了NSGregorianCalendar之外,还有几个日历标识符。使用适合您的语言环境的任何内容。您可以通过按字段对字段进行按位OR运算(例如,NSYearCalendarUnit | NSMonthCalendarUnit)并使用components:fromDate
来询问您想要的任何组件集。您可以在Date and Time Programming Guide。
将日历组件作为基本类型,比较是有效的。
答案 2 :(得分:2)
在 Swift 中,您只能通过给定代码获得年份
let formatter = NSDateFormatter()
formatter.dateFormat = "yyyy"
let dateStr = formatter.stringFromDate(NSDate())
print(dateStr)
<强>输出:强>
2017
答案 3 :(得分:0)
<强>夫特强>
更容易将任何日期元素作为可选字符串。
extension Date {
// Year
var currentYear: String? {
return getDateComponent(dateFormat: "yy")
//return getDateComponent(dateFormat: "yyyy")
}
func getDateComponent(dateFormat: String) -> String? {
let format = DateFormatter()
format.dateFormat = dateFormat
return format.string(from: self)
}
}
print("-- \(Date().currentYear)") // result -- Optional("2017")
答案 4 :(得分:0)
您可以通过遵循目标c中的代码来获得
NSDateComponents *components = [[NSCalendar currentCalendar] components:NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear fromDate:[NSDate date]];
int year = [components year];
NSString *strFromyear = [NSString stringWithFormat:@"%d",year];