/** * Format committer, author or tagger ident according to this formatter's specification. * * @param ident * @return formatted version of date, time and time zone */ @SuppressWarnings("boxing") public String formatDate(PersonIdent ident) { switch (format) { case RAW: int offset = ident.getTimeZoneOffset(); String sign = offset < 0 ? "-" : "+"; int offset2; if (offset < 0) offset2 = -offset; else offset2 = offset; int hours = offset2 / 60; int minutes = offset2 % 60; return String.format( "%d %s%02d%02d", ident.getWhen().getTime() / 1000, sign, hours, minutes); case RELATIVE: return RelativeDateFormatter.format(ident.getWhen()); case LOCALELOCAL: case LOCAL: dateTimeInstance.setTimeZone(SystemReader.getInstance().getTimeZone()); return dateTimeInstance.format(ident.getWhen()); case LOCALE: TimeZone tz = ident.getTimeZone(); if (tz == null) tz = SystemReader.getInstance().getTimeZone(); dateTimeInstance.setTimeZone(tz); dateTimeInstance2.setTimeZone(tz); return dateTimeInstance.format(ident.getWhen()) + " " + dateTimeInstance2.format(ident.getWhen()); default: tz = ident.getTimeZone(); if (tz == null) tz = SystemReader.getInstance().getTimeZone(); dateTimeInstance.setTimeZone(ident.getTimeZone()); return dateTimeInstance.format(ident.getWhen()); } }
@Theory public void badlyFormattedWithExplicitRef() { Calendar ref = new GregorianCalendar( SystemReader.getInstance().getTimeZone(), SystemReader.getInstance().getLocale()); try { GitDateParser.parse(dateStr, ref); fail("The expected ParseException while parsing '" + dateStr + "' did not occur."); } catch (ParseException e) { // expected } }
/** * Create a new Git oriented date formatter * * @param format */ public GitDateFormatter(Format format) { this.format = format; switch (format) { default: break; case DEFAULT: // Not default: dateTimeInstance = new SimpleDateFormat("EEE MMM dd HH:mm:ss yyyy Z", Locale.US); break; case ISO: dateTimeInstance = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z", Locale.US); break; case LOCAL: dateTimeInstance = new SimpleDateFormat("EEE MMM dd HH:mm:ss yyyy", Locale.US); break; case RFC: dateTimeInstance = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z", Locale.US); break; case SHORT: dateTimeInstance = new SimpleDateFormat("yyyy-MM-dd", Locale.US); break; case LOCALE: case LOCALELOCAL: SystemReader systemReader = SystemReader.getInstance(); dateTimeInstance = systemReader.getDateTimeInstance(DateFormat.DEFAULT, DateFormat.DEFAULT); dateTimeInstance2 = systemReader.getSimpleDateFormat("Z"); break; } }
@Test public void testRelativize_mixedCase() { SystemReader systemReader = SystemReader.getInstance(); String base = toOSPathString("C:\\git\\jgit"); String other = toOSPathString("C:\\Git\\test\\d\\f.txt"); String expectedCaseInsensitive = toOSPathString("..\\test\\d\\f.txt"); String expectedCaseSensitive = toOSPathString("..\\..\\Git\\test\\d\\f.txt"); if (systemReader.isWindows()) { String actual = FileUtils.relativize(base, other); assertEquals(expectedCaseInsensitive, actual); } else if (systemReader.isMacOS()) { String actual = FileUtils.relativize(base, other); assertEquals(expectedCaseInsensitive, actual); } else { String actual = FileUtils.relativize(base, other); assertEquals(expectedCaseSensitive, actual); } }