/** * Copyright (c) 2012 Todoroo Inc * * See the file "LICENSE" for the full license governing this code. */ package com.todoroo.astrid.gtasks.api; import java.util.Date; import java.util.TimeZone; import com.google.api.client.util.DateTime; @SuppressWarnings("nls") public class GtasksApiUtilities { public static DateTime unixTimeToGtasksCompletionTime(long time) { if (time < 0) return null; return new DateTime(new Date(time), TimeZone.getDefault()); } // public static String unixTimeToGtasksCompletionTime(long time) { // if (time == 0) return null; // return new DateTime(new Date(time), TimeZone.getDefault()).toStringRfc3339(); // } public static long gtasksCompletedTimeToUnixTime(DateTime gtasksCompletedTime, long defaultValue) { if (gtasksCompletedTime == null) return defaultValue; return gtasksCompletedTime.getValue(); } // public static long gtasksCompletedTimeToUnixTime(String gtasksCompletedTime, long defaultValue) { // if (gtasksCompletedTime == null) return defaultValue; // try { // long utcTime = DateTime.parseRfc3339(gtasksCompletedTime).value; // Date date = new Date(utcTime); // return date.getTime(); // } catch (NumberFormatException e) { // return defaultValue; // } // } /** * Google deals only in dates for due times, so on the server side they normalize to utc time * and then truncate h:m:s to 0. This can lead to a loss of date information for * us, so we adjust here by doing the normalizing/truncating ourselves and * then correcting the date we get back in a similar way. * @param time * @return */ public static DateTime unixTimeToGtasksDueDate(long time) { if (time < 0) return null; Date date = new Date(time); date.setHours(0); date.setMinutes(0); date.setSeconds(0); date.setTime(date.getTime() - date.getTimezoneOffset() * 60000); DateTime dateTime = new DateTime(date, TimeZone.getTimeZone("UTC")); return dateTime; } // public static DateTime unixTimeToGtasksDueDate(long time) { // if (time == 0) return null; // return new DateTime(time, 0); // } //Adjust for google's rounding public static long gtasksDueTimeToUnixTime(DateTime gtasksDueTime, long defaultValue) { if (gtasksDueTime == null) return defaultValue; try { long utcTime = gtasksDueTime.getValue(); //DateTime.parseRfc3339(gtasksDueTime).value; Date date = new Date(utcTime); Date returnDate = new Date(date.getTime() + date.getTimezoneOffset() * 60000); return returnDate.getTime(); } catch (NumberFormatException e) { return defaultValue; } } // public static long gtasksDueTimeToUnixTime(DateTime gtasksDueTime, long defaultValue) { // if (gtasksDueTime == null) return defaultValue; // return gtasksDueTime.getValue(); // } }