Tôi đang cố gắng lấy một chuỗi ngày tháng và biến nó thành một NSD cụ thể (ví dụ: ngày 1 tháng 7 năm 1981), nhưng tôi không thấy và phương pháp để đặt ngày. Có ai biết làm thế nào để thực hiện điều này? Có lẽ chuyển đổi một đối tượng DateTime thành NSDate?Tạo NSDate Monotouch
Trả lời
Bạn muốn nhìn vào lớp NSDateFormatter :)
Mã của bạn sẽ giống như thế này. . .
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MMM dd, yyyy HH:mm"];
NSDate *parsed = [formatter dateFromString:dateString];
S
PS Ví dụ tự do sao chép từ this question :)
public static DateTime NSDateToDateTime(MonoTouch.Foundation.NSDate date)
{
return (new DateTime(2001,1,1,0,0,0)).AddSeconds(date.SecondsSinceReferenceDate);
}
public static MonoTouch.Foundation.NSDate DateTimeToNSDate(DateTime date)
{
return MonoTouch.Foundation.NSDate.FromTimeIntervalSinceReferenceDate((date-(new DateTime(2001,1,1,0,0,0))).TotalSeconds);
}
Điều này sẽ giúp
Alex
Cách đơn giản nhất là để thiết lập nó từ DateTime.
REVISION: Các toán tử chuyển đổi NSDate hiện rõ ràng, không ngầm nữa! Tôi đã cập nhật ví dụ bên dưới.
Nếu bạn nhìn vào nguyên mẫu NSDate bạn sẽ tìm thấy hai nhà khai thác:
public static explicit operator NSDate(DateTime dt);
public static explicit operator DateTime(NSDate d);
Hai sẽ thực hiện chuyển đổi cho bạn.
Chuyển đổi rõ ràng NSDate đến và từ DateTime khá tốt, nhưng bạn phải biết rằng NSDate luôn là thời gian UTC và DateTime được đặt mặc định thành DateTimeKind.Unspecified (khi đọc từ cơ sở dữ liệu) hoặc DateTimeKind.Locale (khi được đặt với DateTime.Today). Cách tốt nhất để chuyển đổi mà không cần tính toán múi giờ phức tạp là để buộc các DateTimeKind phải:
// Set NSDate:
DateTime date = DateTime.Parse("1981-07-01")
NSDate nsDate = (NSDate)DateTime.SpecifyKind(date, DateTimeKind.Utc);
// Get DateTime from NSDate:
date = DateTime.SpecifyKind((DateTime)nsDate, DateTimeKind.Unspecified);
Tôi khuyên bạn nên thêm một dòng sau để đảm bảo chuyển đổi đúng 'date = date.ToLocalTime();' đã hoạt động hoàn hảo cho tôi ngoài những gì bạn đã đề cập. Cảm ơn bạn đã hướng dẫn. – BRogers
'ngày = DateTime.SpecifyKind (nsDate, DateTimeKind.Unspecified);' Điều này cho tôi cho ngày không chính xác –
Điều này làm việc tuyệt vời cho tôi quá. Cảm ơn! –
public NSDate ConvertDateTimeToNSDate(DateTime date)
{
DateTime newDate = TimeZone.CurrentTimeZone.ToLocalTime(
new DateTime(2001, 1, 1, 0, 0, 0));
return NSDate.FromTimeIntervalSinceReferenceDate(
(date - newDate).TotalSeconds);
}
public DateTime ConvertNsDateToDateTime(NSDate date)
{
DateTime newDate = TimeZone.CurrentTimeZone.ToLocalTime(
new DateTime(2001, 1, 1, 0, 0, 0));
return newDate.AddSeconds(date.SecondsSinceReferenceDate);
}
Nguồn: https://theweeklybyte.wordpress.com/2014/05/27/convert-datetime-to-nsdate-and-back/
Hãy thử điều này:
private static NSDate DateTimeToNSDate(DateTime date)
{
NSCalendar calendar = NSCalendar.CurrentCalendar;
NSDateComponents comps = new NSDateComponents();
comps.Day = date.Day;
comps.Month = date.Month;
comps.Year = date.Year;
comps.Minute = date.Minute;
comps.Hour = date.Hour;
return calendar.DateFromComponents(comps);
}
- 1. tạo NSDate từ một chuỗi
- 2. NSDate giữa hai NSDates
- 3. MonoTouch: uncaughtExceptionHandler?
- 4. Khởi tạo đối tượng NSDate với thời gian cụ thể
- 5. Http ngày để NSDate
- 6. Nhận NSDate từ NSDate được điều chỉnh theo múi giờ
- 7. Cách tạo liên kết MonoTouch từ một .framework
- 8. NSDate - Offsetting Múi giờ
- 9. Monotouch UITabBarController + UINavigationController
- 10. NSDate từ NSString
- 11. NSString để NSDate
- 12. NSDateComponents của một NSDate
- 13. ngày Thêm vào NSDate
- 14. UIDatePicker trở sai NSDate
- 15. NSTimeInterval to NSDate
- 16. NSDate từ NSDateComponents
- 17. NSDate trừ một tháng
- 18. NSDate từ chuỗi
- 19. Tên ngày từ NSDate?
- 20. Thư viện QR cho MonoTouch?
- 21. MonoTouch OpenTK và UniformMatrix4
- 22. MonoTouch WIFI SSID
- 23. AOP với MonoTouch
- 24. AesCryptoServiceProvider trong MonoTouch
- 25. MonoTouch: Frame.Origin ở đâu?
- 26. Cách MonoTouch hoạt động?
- 27. MonoTouch Sử dụng NSData.FromBytes
- 28. phát mp3 với monotouch
- 29. Xamarin/monotouch UILabel multiline
- 30. sizeWithFont với MonoTouch
tôi sẽ nhìn vào khung cảnh ngày sử dụng NSDateFormatter. Monotouch không có tất cả các phương pháp của mục tiêu C, nhưng nó trông giống như một bước đi đúng hướng. Cảm ơn Dean – Bryan
Tôi chưa bao giờ sử dụng monotouch bản thân mình nhưng rõ ràng NSDateFormatter có sẵn trong phiên bản 1.4.4 (http://monotouch.net/index.php?title=Releases/MonoTouch_1.4.4&highlight=NSDateFormatter). – deanWombourne