如何从日期选择器后端检索格式化版本的日期

How to retrieve formatted version of date from date picker backend

我在 iOS 应用程序(使用 xamarin)中使用了一个日期选择器和时间选择器,我正在尝试检索用户选择的日期和时间以在代码的其他地方使用。我的问题是我不确定如何只检索日期或时间。例如,我有以下代码来检索日期:

// not getting proper date format!
var selectedDate = ContactDatePicker.Date.ToString ();
var selectedTime= ContactTimePicker.Date.ToString ();
Console.WriteLine ("Here: {0}, {1}", selectedDate, selectedTime);

但它输出每个变量的完整日期和时间,如下所示:

Here: 2016-05-24 15:18:50 +0000, 2016-05-24 15:18:50 +0000

我想要 2016-05-24 之类的日期或 15:18:50 之类的时间。我意识到我可以为此使用正则表达式,但我想知道是否有一种简单的方法来格式化日期。

由于 UIDatePicker.Date returns nsdate 您可以先将其转换为 DateTime 并向 ToString 方法提供所需的格式。

var dateTime = DateTime.SpecifyKind(ContactTimePicker.Date, DateTimeKind.Unspecified);
var selectedDate = dateTime.ToString("yyyy-MM-dd");
var selectedTime= dateTime.ToString("HH:mm:ss");        

如果 ContactDatePicker.Date 类型是 DateTime 您可以使用 ToShortDateString()ToShortTimeString()ToLongTimeString:

var selectedDate = ContactDatePicker.Date.ToShortDateString();
var selectedTime = ContactTimePicker.Date.ToLongTimeString();

//Output:
2016-05-24
15:18:50

根据 UIDatePickerDate 属性 returns a NSDate 的文档,但存在到 DateTime 的隐式转换,所以你可以这样做:

DateTime date = ContactDatePicker.Date    //Implicit conversion
var selectedDate = date.ToShortDateString();
var selectedTime = date.ToLongTimeString();

感谢我最终使用的信息:

// explicitly convert NSDate to DateTime to change format
DateTime date = (DateTime)ContactDatePicker.Date;
DateTime time = (DateTime)ContactTimePicker.Date;

// able to overload ToString() method with argument to change format
var selectedDate = date.ToString ("d");
var selectedTime = time.ToString ("HH:mm:ss");