Làm cách nào để chuyển đổi, NSDate
để NSString
chỉ năm ở định dạng @ "yyyy" được xuất thành chuỗi?
Làm cách nào để chuyển đổi, NSDate
để NSString
chỉ năm ở định dạng @ "yyyy" được xuất thành chuỗi?
Câu trả lời:
Làm thế nào về...
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy"];
//Optionally for time zone conversions
[formatter setTimeZone:[NSTimeZone timeZoneWithName:@"..."]];
NSString *stringFromDate = [formatter stringFromDate:myNSDateInstance];
//unless ARC is active
[formatter release];
Swift 4.2:
func stringFromDate(_ date: Date) -> String {
let formatter = DateFormatter()
formatter.dateFormat = "dd MMM yyyy HH:mm" //yyyy
return formatter.string(from: date)
}
init
với NSDateFormatter
. Nó đã bị xóa sau iOS 3.2 . (Và nếu bạn sử dụng một phương thức lớp thay thế, nó sẽ tự động thoát và bạn cũng sẽ không gặp vấn đề rò rỉ.)
init
ở nhiều nơi.
Tôi không biết làm thế nào tất cả chúng ta đã bỏ lỡ điều này: localizedStringFromDate: dateStyle: timeStyle:
NSString *dateString = [NSDateFormatter localizedStringFromDate:[NSDate date]
dateStyle:NSDateFormatterShortStyle
timeStyle:NSDateFormatterFullStyle];
NSLog(@"%@",dateString);
đầu ra '13 / 06/12 00:22:39 GMT + 03: 00 '
Hy vọng sẽ tăng thêm giá trị bằng cách cung cấp định dạng thông thường bao gồm cả năm, tháng và ngày với thời gian. Bạn có thể sử dụng công cụ định dạng này trong hơn một năm
[dateFormat setDateFormat: @"yyyy-MM-dd HH:mm:ss zzz"];
Có một số NSDate
người trợ giúp trên web, tôi có xu hướng sử dụng:
https://github.com/billymeltdown/nsdate-rcper/
Trích xuất Readme dưới đây:
NSString *displayString = [NSDate stringForDisplayFromDate:date];
Điều này tạo ra các loại đầu ra sau đây:
‘3:42 AM’ – if the date is after midnight today
‘Tuesday’ – if the date is within the last seven days
‘Mar 1’ – if the date is within the current calendar year
‘Mar 1, 2008’ – else ;-)
Trong Swift:
var formatter = NSDateFormatter()
formatter.dateFormat = "yyyy"
var dateString = formatter.stringFromDate(YourNSDateInstanceHERE)
NSDateFormatter *dateformate=[[NSDateFormatter alloc]init];
[dateformate setDateFormat:@"yyyy"]; // Date formater
NSString *date = [dateformate stringFromDate:[NSDate date]]; // Convert date to string
NSLog(@"date :%@",date);
Nếu bạn không có NSDate
-descriptionWithCalendarFormat:timeZone:locale:
sẵn (tôi không tin iPhone / Ca cao cảm ứng bao gồm điều này), bạn có thể cần sử dụng strftime và khỉ xung quanh với một số chuỗi kiểu C. Bạn có thể lấy dấu thời gian UNIX từ việc NSDate
sử dụng NSDate -timeIntervalSince1970
.
+(NSString*)date2str:(NSDate*)myNSDateInstance onlyDate:(BOOL)onlyDate{
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
if (onlyDate) {
[formatter setDateFormat:@"yyyy-MM-dd"];
}else{
[formatter setDateFormat: @"yyyy-MM-dd HH:mm:ss"];
}
//Optionally for time zone conversions
// [formatter setTimeZone:[NSTimeZone timeZoneWithName:@"..."]];
NSString *stringFromDate = [formatter stringFromDate:myNSDateInstance];
return stringFromDate;
}
+(NSDate*)str2date:(NSString*)dateStr{
if ([dateStr isKindOfClass:[NSDate class]]) {
return (NSDate*)dateStr;
}
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd"];
NSDate *date = [dateFormat dateFromString:dateStr];
return date;
}
Chỉ cần thêm phần mở rộng này:
extension NSDate {
var stringValue: String {
let formatter = NSDateFormatter()
formatter.dateFormat = "yourDateFormat"
return formatter.stringFromDate(self)
}
}
nhanh chóng trả lời 4
static let dateformat: String = "yyyy-MM-dd'T'HH:mm:ss"
public static func stringTodate(strDate : String) -> Date
{
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = dateformat
let date = dateFormatter.date(from: strDate)
return date!
}
public static func dateToString(inputdate : Date) -> String
{
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = dateformat
return formatter.string(from: inputdate)
}
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar components:(NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay) fromDate:myNSDateInstance];
NSInteger year = [components year];
// NSInteger month = [components month];
NSString *yearStr = [NSString stringWithFormat:@"%ld", year];
Đó là định dạng nhanh chóng:
func dateFormatterWithCalendar(calndarIdentifier: Calendar.Identifier, dateFormat: String) -> DateFormatter {
let formatter = DateFormatter()
formatter.calendar = Calendar(identifier: calndarIdentifier)
formatter.dateFormat = dateFormat
return formatter
}
//Usage
let date = Date()
let fotmatter = dateFormatterWithCalendar(calndarIdentifier: .gregorian, dateFormat: "yyyy")
let dateString = fotmatter.string(from: date)
print(dateString) //2018