在java中隐藏RFC3339 DateTime到日期

如何在RFC中将RFC 3339 com.google.api.client.util.DateTime转换为DateTime。

例如,我得到“2014-07-21T16:35:27.000Z”,我需要将其转换为“2014年7月15日下午6:07:25”格式。

无论如何转换这个?

这是我试过的。

我已将DateandTime保存为mongo db中的字符串。

public Map getYouTubeLastFetchDateTime(String key) { System.out.println("Inserting data first time...."); Date nowDate = new Date(); Date dateBefore = new Date(nowDate.getTime() - 7 * 24 * 3600 * 1000); Utils utils = new Utils(); DBCollection collection = utils.getStaging().getCollection( DB_YOUTUBE_COLLECTION_NAME); if (null != collection) { CIPKeyWord keyword = new CIPKeyWord(); keyword.setLastFeachedTime(dateBefore); keyword.setName(key); DBObject dbObject = getDBObject(keyword); collection.save(dbObject); // ObjectId id = (ObjectId) dbObject.get("_id"); } queryObject = new BasicDBObject().append("name", key); result = dao.findOne(queryObject, DB_YOUTUBE_COLLECTION_NAME); lastFetchedTime = (String) result.get("lastFeachedTime"); nextPageToken = (String) result.get("nextPageToken"); prevPageToken = (String) result.get("prevPageToken"); 

}

  private String getKeyword() { Map paginationInfo = utils .getYouTubeLastFetchDateTime(key); String dateTime = paginationInfo.get("lastFechedDate"); date = new SimpleDateFormat("MMMM dd, yyyy", Locale.ENGLISH) .parse(dateTime); com.google.api.client.util.DateTime.DateTime lastFechedDate = new DateTime(date); } 

现在更新日期我得到Rfc3339格式的日期,我必须转换为java.util.Date格式。

  public static boolean updateYouTubeLastFetchDate(String keyword, DateTime newFetchTime, String nextPageToken, String prevPageToken){ BasicDBObject updateDocument = new BasicDBObject(); updateDocument.append( "$set", new BasicDBObject().append("nextPageToken", nextPageToken).append("prevPageToken", prevPageToken) .append("lastFeachedTime", newFetchTime.toString()) ); CIPDBUtils utils = new CIPDBUtils(); DBCollection collection = utils.getStaging().getCollection( DB_YOUTUBE_COLLECTION_NAME); collection.update(queryObject, updateDocument); 

}

如果我理解你的问题,你可以像这样使用SimpleDateFormat

 String in = "2014-07-21T16:35:27.000Z"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX"); System.out.println(sdf.parse(in)); 

com.google.api.client.util.DateTime dt = …;

新日期(dt.getValue());

com.google.api.client.util.DateTime包含两个字段: value – ms,因为epoch tzShift – 相对于UTC的时移最小因此,您必须考虑时间偏移。 new Date(dateTime.getValue()+ dateTime.getTimeZoneShift()* 60000L