in ogg-plugin/src/main/java/com/aliyun/odps/ogg/handler/datahub/util/BucketPath.java [62:152]
protected static String replaceShorthand(char c, long timestamp) {
try {
Preconditions.checkNotNull(timestamp, "timestamp can't be null");
} catch (NumberFormatException e) {
throw new RuntimeException("Unable to parse timestamp.", e);
}
// It's a date
String formatString = "";
switch (c) {
case '%':
return "%";
case 'a':
formatString = "EEE";
break;
case 'A':
formatString = "EEEE";
break;
case 'b':
formatString = "MMM";
break;
case 'B':
formatString = "MMMM";
break;
case 'c':
formatString = "EEE MMM d HH:mm:ss yyyy";
break;
case 'd':
formatString = "dd";
break;
case 'e':
formatString = "d";
break;
case 'D':
formatString = "MM/dd/yy";
break;
case 'H':
formatString = "HH";
break;
case 'I':
formatString = "hh";
break;
case 'j':
formatString = "DDD";
break;
case 'k':
formatString = "H";
break;
case 'l':
formatString = "h";
break;
case 'm':
formatString = "MM";
break;
case 'M':
formatString = "mm";
break;
case 'n':
formatString = "M";
break;
case 'p':
formatString = "a";
break;
case 's':
return "" + (timestamp/1000);
case 'S':
formatString = "ss";
break;
case 't':
// This is different from unix date (which would insert a tab character
// here)
return "" + timestamp;
case 'y':
formatString = "yy";
break;
case 'Y':
formatString = "yyyy";
break;
case 'z':
formatString = "ZZZ";
break;
default:
return "";
}
SimpleDateFormat format = new SimpleDateFormat(formatString);
format.setTimeZone(TimeZone.getDefault());
Date date = new Date(timestamp);
return format.format(date);
}