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

C# 如何从日期选择器后端检索日期的格式化版本,c#,ios,date,xamarin,uidatepicker,C#,Ios,Date,Xamarin,Uidatepicker,我在iOS应用程序中使用了一个日期选择器和时间选择器(使用xamarin),我试图检索用户选择的日期和时间,以便在代码的其他地方使用。我的问题是,我不知道如何检索日期或时间。例如,我使用以下代码检索日期: // not getting proper date format! var selectedDate = ContactDatePicker.Date.ToString (); var selectedTime= ContactTimePicker.Date.ToString (); Con

我在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
。我意识到我可以使用regex来实现这一点,但我想知道是否有一种简单的方法来格式化日期。

因为返回
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");        
由于返回
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
,则可以使用
ToSortDateString()
ToSortTimeString()
ToLongTimeString

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

//Output:
2016-05-24
15:18:50
根据的文档,
Date
属性返回一个
NSDate
,但存在到
DateTime
的隐式转换,因此您可以执行以下操作:

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

如果
ContactDatePicker.Date
类型为
DateTime
,则可以使用
ToSortDateString()
ToSortTimeString()
ToLongTimeString

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

//Output:
2016-05-24
15:18:50
根据的文档,
Date
属性返回一个
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");

感谢我最终使用的信息:

// 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");

我以前尝试过这个方法,但是我得到一个生成错误,说方法ToString takes 1参数没有重载我以前尝试过这个方法,但是我得到了一个构建错误,说方法ToString takes 1参数没有重载,这显然不是
DateTime
,因为
。Date
没有这个函数谢谢,不过我必须显式转换。我的输出仍然不是我用你的方法想要的(
2016年5月24日,下午3:55:35
),但它至少是一个起点,显然不是
DateTime
,因为
。Date
没有那个功能。谢谢,我必须明确转换。我的输出仍然不是我用你的方法想要的(
2016年5月24日,下午3:55:35
),但它至少是一个起点