private void writeTimeStamp(long time) {
   calendar.setTimeInMillis(time);
   writeNumber(buf, calendar.get(Calendar.YEAR), 4);
   buf.write('-');
   writeNumber(buf, calendar.get(Calendar.MONTH) + 1, 2);
   buf.write('-');
   writeNumber(buf, calendar.get(Calendar.DAY_OF_MONTH), 2);
   buf.write('T');
   writeNumber(buf, calendar.get(Calendar.HOUR_OF_DAY), 2);
   buf.write(':');
   writeNumber(buf, calendar.get(Calendar.MINUTE), 2);
   buf.write(':');
   writeNumber(buf, calendar.get(Calendar.SECOND), 2);
   buf.write('.');
   writeNumber(buf, calendar.get(Calendar.MILLISECOND), 3);
   if (timestampInUTC) buf.write('Z');
   else
     writeTimezone(
         (calendar.get(Calendar.ZONE_OFFSET) + calendar.get(Calendar.DST_OFFSET)) / 60000);
 }