将Java Date转换为DateTime在Xamarin中不起作用

问题描述 投票:1回答:1

我有像这个2016/11/28和时间07:30 PM的日期和时间。并结合这个字符串,如下所示

string mydate = extras.GetString("Apodate") + " " + extras.GetString("Apostarttime");

所以mydate字符串包含2016/11/28 07:30PM

不,我想将此字符串转换为以下格式

"yyyy-MM-dd'T'HH:mm:ss'Z'"

所以我试试这样:

SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy hh:mm a");
try
{
    Java.Util.Date startdate = dateFormat.Parse(mydate);
    Java.Util.Date enddate = dateFormat.Parse(mydate1);
    SimpleDateFormat rformat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
    DateTime dt1 = DateTime.ParseExact(rformat.Format(startdate).ToString(), "yyyy-MM-dd'T'HH:mm:ss'Z'", CultureInfo.InvariantCulture);
    model.StartTime = dt1;
}
catch (ParseException e)
{
    e.PrintStackTrace();
}

但我的model.StartTime包含12/11/0195 7:30:00 PM。但我想要

2016/11/28 7:30:00 PM。作为DateTime。

c# android date datetime simpledateformat
1个回答
0
投票

首先,你应该考虑做的事情是 1.将字符串(类型)转换为DateTime(类型) - 首先搜索parseExact如何做,我认为“yyyy-MM-dd'T'HH:mm:ss'Z'”不是正确的日期时间格式 2.当你有Datetime(类型)时,你可以显示你想要的任何字符串格式 - 搜索如何将类型DateTime转换为字符串

链接 https://stackoverflow.com/questions/5366285/parse-string-to-datetime-in-c-sharp#= How do I get the AM/PM value from a DateTime?

TLDR;

 SimpleDateFormat rformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss ");//Format text as what ParseExact method can do 
 DateTime dt1 = DateTime.ParseExact(rformat.Format(startdate).ToString(), "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture);//plz become Datetime!!! And don't give me a runtime error here
 model.StartTime = dt1;

当你想要显示model.StartTime时

 string Datetxt = model.StartTime.ToString("yyyy/MM/dd'T'HH:mm tt'Z'", CultureInfo.InstalledUICulture) //now become a beautiful string with unwanted chars 'T' and  'Z'

Result

© www.soinside.com 2019 - 2024. All rights reserved.