1

我正在构建一个用 Java/Android 编码并使用 Google Task API 的应用程序,但我遇到了一个主要问题。

我尝试输入任务 API 返回“错误请求”错误的到期或完成日期。但是,当我不尝试设置截止日期或完成日期时,我已成功发布任务。

我花了几个小时研究这个问题,我发现最接近解决方案的是以下线程:

http://groups.google.com/group/google-tasks-api/browse_thread/thread/1753df5bbc8e3cb8/ab66b5e675f06e6a?lnk=gst&q=problem+sharing#ab66b5e675f06e6a

我试图设置任务的状态以及线程中提到的日期,但这似乎对我不起作用。

我假设我的 DateTime 格式错误,尽管我只是使用 Google 文档 (com.google.api.client.util.DateTime) 中指定的 DateTime。

这是我尝试使用的典型 DateTime 值的示例:

2011-10-03T22:28:626

我试过下面的代码...

DateTime date = new DateTime(new Date());
Task task = new Task();
task.setTitle("Hello World");
task.setDue(date);
task.setStatus("needsAction");

和 ...

DateTime date = new DateTime(new Date());   
Task task = new Task();
task.setTitle("Hello World");
task.setCompleted(date);
task.setStatus("completed");

如果有人可以帮助我,我将不胜感激。

谢谢你。


感谢所有观看的人。

经过多一点挖掘后,我找到了答案,所以在这里......

Google Task API 目前只接受 DATETIME。

我提供了一个 DateTime 但格式不正确,我必须添加一个 Time Zone Shift Integer。例如 com.google.api.client.util.DateTime.DateTime(long value, Integer tzShift)。

我只是做了下面的事情,它奏效了。

DateTime date = new DateTime(System.currentTimeMillis(), 0);
Task task = new Task();
task.setTitle("Hello World");
task.setDue(date);
task.setStatus("needsAction");
4

3 回答 3

2

如果您尝试将日期作为字符串提供,会发生什么情况?

根据开发人员文档,这应该是有效的。例如,这是提供的示例之一:

Task task = new Task();
task.title = "New Task";
task.notes = "Please complete me";
task.due = "2010-10-15T12:00:00.000Z";

Task result = service.tasks.insert("@default", task).execute();
System.out.println(result.title);

[来自:http ://code.google.com/apis/tasks/v1/using.html#creating_task ]

如果这可行,则在将 DateTime 对象转换为 JSON 字符串时,客户端库中可能存在错误。

于 2011-10-03T22:31:24.680 回答
0

还有一种可能。我使用一个线程来运行 update.execute() 编码并将结果相同。(错误请求 / 400 / 输入无效)

于 2013-02-15T07:53:15.153 回答
0

利用:

DateTime date = new DateTime(System.currentTimeMillis(),0);
task.setDue(date);

or
new DateTime(new Date(value), TimeZone.getDefault());

不要使用:

DateTime date = new DateTime(System.currentTimeMillis());
于 2012-04-29T15:07:36.083 回答