【问题标题】:How to retrieve formatted version of date from date picker backend如何从日期选择器后端检索格式化版本的日期
【发布时间】:2016-05-24 15:28:01
【问题描述】:

我在我的 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 的时间。我意识到我可以为此使用正则表达式,但我想知道是否有一种简单的方法来格式化日期。

【问题讨论】:

    标签: c# ios date xamarin uidatepicker


    【解决方案1】:

    由于UIDatePicker.Date 返回nsdate,您可以先将其转换为日期时间,然后将所需格式提供给ToString 方法。

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

    【讨论】:

    • 我之前尝试过这个方法,但是我得到一个构建错误,说有no overload for method ToString takes 1 argument
    【解决方案2】:

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

    var selectedDate = ContactDatePicker.Date.ToShortDateString();
    var selectedTime = ContactTimePicker.Date.ToLongTimeString();
    
    //Output:
    2016-05-24
    15:18:50
    

    根据UIDatePicker 的文档,Date 属性返回一个NSDate,但是隐式转换为DateTime,所以你可以这样做:

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

    【讨论】:

    • 它显然不是DateTime 因为.Date 没有那个功能
    • 谢谢,不过我必须明确转换。我的输出仍然不是我想要的(5/24/2016, 3:55:35 PM),但它至少是一个起点
    【解决方案3】:

    感谢我最终使用的信息:

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

    【讨论】:

      猜你喜欢
      • 2014-05-08
      • 1970-01-01
      • 2014-04-22
      • 2018-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-14
      相关资源
      最近更新 更多