SimpleDataFormat java和Convert.ToDateTime()C#
我正在开发一个Android应用程序,它使用XML与web服务器(用C#编写)进行通信。在某些情况下,从app I send和EndDate参数,如下所示:SimpleDataFormat java和Convert.ToDateTime()C#,c#,android,date,datetime,simpledateformat,C#,Android,Date,Datetime,Simpledateformat,我正在开发一个Android应用程序,它使用XML与web服务器(用C#编写)进行通信。在某些情况下,从app I send和EndDate参数,如下所示: public Request SendRequest(Date endDate) { setPostData("EndDate", StringUtils.gmtDateFormat.format(endDate)); } 我认为格式会将日期转换为字符串 其中StringUtils.cs定义为: public class StringUt
public Request SendRequest(Date endDate)
{
setPostData("EndDate", StringUtils.gmtDateFormat.format(endDate));
}
我认为格式
会将日期转换为字符串
其中StringUtils.cs
定义为:
public class StringUtils {
public static final SimpleDateFormat gmtDateFormat;
static {
// When sending dates to the server
gmtDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ", Locale.US);
gmtDateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
gmtDateFormat.setCalendar(Calendar.getInstance(TimeZone.getTimeZone("UTC"), Locale.US));
}
}
web服务器通过将从应用程序发送的字符串转换为DateTime
Convert.ToDateTime(Request.Form["EndDate"]);
这就是我得到以下错误的地方:
Message: ...EndDate=2015-0005-13T06%3a00%3a00.00%2b0000...
Exception: System.FormatException: String was not recognized as a valid DateTime.
at System.DateTime.Parse(String s, IFormatProvider provider)
at System.Convert.ToDateTime(String value)
这里有两个问题
为什么要将日期作为字符串发送?将其作为long发送,这是避免任何类型解析错误的最安全的方法。如何将其转换为long?在java中,只需使用date.getTime(),在C#中,您可以使用date.Ticks(假设您使用的是DateTime),然后您还可以从long(long代表日期的毫秒)构造新的日期或DateTime,C#
日期时间
刻度基于0001-01-01的历元,并因种类
而变化。Java使用的Unix纪元是1970-01-01,固定为UTC。当然,您可以转换,但这需要这些外部知识。ISO8601标准无处不在。@AlanFord-您的setPostData
方法是否可能是应用URL编码的方法?你有没有通过Fiddler或类似工具检查过电线上的东西?