Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SimpleDataFormat java和Convert.ToDateTime()C#_C#_Android_Date_Datetime_Simpledateformat - Fatal编程技术网

SimpleDataFormat java和Convert.ToDateTime()C#

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

我正在开发一个Android应用程序,它使用XML与web服务器(用C#编写)进行通信。在某些情况下,从app I send和EndDate参数,如下所示:

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)
这里有两个问题

  • 2015-0005-13应为2015-05-13
  • 06%3a00%3a00.00%2b0000来自哪里

  • 为什么要将日期作为字符串发送?将其作为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或类似工具检查过电线上的东西?