import java.text.ParsePosition;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.util.Optional;
public class Main {
public static void main
(String[] args
) { String english
= "Your Last Login was 2013/10/04 13:06:45 ( 0 Days, 0 Hours, 0 Minutes )"; String chinese
= "您上次登录是 2013/10/04 13:06:45( 0 天, 0 小时 0 分钟 )";
// Processing english
Optional<LocalDateTime> date = getDateTime(english);
date.
ifPresent(dt
-> System.
out.
printf("Year: %d, Month: %d, Day: %d, Hour: %d, Minute: %d, Second: %d%n",
dt.getYear(), dt.getMonthValue(), dt.getDayOfMonth(), dt.getHour(), dt.getMinute(), dt.getSecond()));
// Processing chinese
date = getDateTime(chinese);
date.
ifPresent(dt
-> System.
out.
printf("Year: %d, Month: %d, Day: %d, Hour: %d, Minute: %d, Second: %d%n",
dt.getYear(), dt.getMonthValue(), dt.getDayOfMonth(), dt.getHour(), dt.getMinute(), dt.getSecond()));
}
static Optional
<LocalDateTime
> getDateTime
(String s
) { // Assuming the date-time string is in the format, yyyy/MM/dd HH:mm:ss
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("uuuu/M/d H:m:s");
Optional<LocalDateTime> result = Optional.empty();
for (int i = 0; i < s.length(); i++) {
try {
result
= Optional.
ofNullable(LocalDateTime.
from(dtf.
parse(s,
new ParsePosition(i
)))); break;
}
}
return result;
}
}
aW1wb3J0IGphdmEudGV4dC5QYXJzZVBvc2l0aW9uOwppbXBvcnQgamF2YS50aW1lLkxvY2FsRGF0ZVRpbWU7CmltcG9ydCBqYXZhLnRpbWUuZm9ybWF0LkRhdGVUaW1lRm9ybWF0dGVyOwppbXBvcnQgamF2YS50aW1lLmZvcm1hdC5EYXRlVGltZVBhcnNlRXhjZXB0aW9uOwppbXBvcnQgamF2YS51dGlsLk9wdGlvbmFsOwoKcHVibGljIGNsYXNzIE1haW4gewoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewoJCVN0cmluZyBlbmdsaXNoID0gIllvdXIgTGFzdCBMb2dpbiB3YXMgMjAxMy8xMC8wNCAxMzowNjo0NSAoIDAgRGF5cywgMCBIb3VycywgMCBNaW51dGVzICkiOwoJCVN0cmluZyBjaGluZXNlID0gIuaCqOS4iuasoeeZu+W9leaYryAyMDEzLzEwLzA0IDEzOjA2OjQ177yIIDAg5aSp77yMIDAg5bCP5pe2IDAg5YiG6ZKfIO+8iSI7CgoJCS8vIFByb2Nlc3NpbmcgZW5nbGlzaAoJCU9wdGlvbmFsPExvY2FsRGF0ZVRpbWU+IGRhdGUgPSBnZXREYXRlVGltZShlbmdsaXNoKTsKCQlkYXRlLmlmUHJlc2VudChkdCAtPiBTeXN0ZW0ub3V0LnByaW50ZigiWWVhcjogJWQsIE1vbnRoOiAlZCwgRGF5OiAlZCwgSG91cjogJWQsIE1pbnV0ZTogJWQsIFNlY29uZDogJWQlbiIsCgkJCQlkdC5nZXRZZWFyKCksIGR0LmdldE1vbnRoVmFsdWUoKSwgZHQuZ2V0RGF5T2ZNb250aCgpLCBkdC5nZXRIb3VyKCksIGR0LmdldE1pbnV0ZSgpLCBkdC5nZXRTZWNvbmQoKSkpOwoKCQkvLyBQcm9jZXNzaW5nIGNoaW5lc2UKCQlkYXRlID0gZ2V0RGF0ZVRpbWUoY2hpbmVzZSk7CgkJZGF0ZS5pZlByZXNlbnQoZHQgLT4gU3lzdGVtLm91dC5wcmludGYoIlllYXI6ICVkLCBNb250aDogJWQsIERheTogJWQsIEhvdXI6ICVkLCBNaW51dGU6ICVkLCBTZWNvbmQ6ICVkJW4iLAoJCQkJZHQuZ2V0WWVhcigpLCBkdC5nZXRNb250aFZhbHVlKCksIGR0LmdldERheU9mTW9udGgoKSwgZHQuZ2V0SG91cigpLCBkdC5nZXRNaW51dGUoKSwgZHQuZ2V0U2Vjb25kKCkpKTsKCX0KCglzdGF0aWMgT3B0aW9uYWw8TG9jYWxEYXRlVGltZT4gZ2V0RGF0ZVRpbWUoU3RyaW5nIHMpIHsKCQkvLyBBc3N1bWluZyB0aGUgZGF0ZS10aW1lIHN0cmluZyBpcyBpbiB0aGUgZm9ybWF0LCB5eXl5L01NL2RkIEhIOm1tOnNzCgkJRGF0ZVRpbWVGb3JtYXR0ZXIgZHRmID0gRGF0ZVRpbWVGb3JtYXR0ZXIub2ZQYXR0ZXJuKCJ1dXV1L00vZCBIOm06cyIpOwoJCQoJCU9wdGlvbmFsPExvY2FsRGF0ZVRpbWU+IHJlc3VsdCA9IE9wdGlvbmFsLmVtcHR5KCk7CgkJZm9yIChpbnQgaSA9IDA7IGkgPCBzLmxlbmd0aCgpOyBpKyspIHsKCQkJdHJ5IHsKCQkJCXJlc3VsdCA9IE9wdGlvbmFsLm9mTnVsbGFibGUoTG9jYWxEYXRlVGltZS5mcm9tKGR0Zi5wYXJzZShzLCBuZXcgUGFyc2VQb3NpdGlvbihpKSkpKTsKCQkJCWJyZWFrOwoJCQl9IGNhdGNoIChEYXRlVGltZVBhcnNlRXhjZXB0aW9uIHwgSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiBlKSB7CgkJCX0KCQl9CgkJcmV0dXJuIHJlc3VsdDsKCX0KfQ==
Year: 2013, Month: 10, Day: 4, Hour: 13, Minute: 6, Second: 45
Year: 2013, Month: 10, Day: 4, Hour: 13, Minute: 6, Second: 45