日期类
public class DateUtil {
private DateUtil(){}
private static final String PATTERN = "yyyy-MM-dd HH:mm:ss";
private static final ThreadLocal<SimpleDateFormat> THREAD_LOCAL = new ThreadLocal(){
@Override
protected SimpleDateFormat initialValue() {
return new SimpleDateFormat(PATTERN);
}
};
public static String dateConvertToStr(Date date){
Objects.requireNonNull(date);
return THREAD_LOCAL.get().format(date);
}
public static Date strConvertToDate(String dateStr){
Objects.requireNonNull(dateStr);
try {
return THREAD_LOCAL.get().parse(dateStr);
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
}
public class CalendarDemo {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
System.out.println(calendar);
Calendar calendar1 = new GregorianCalendar();
System.out.println(calendar1);
System.out.println(calendar.get(Calendar.YEAR));
System.out.println(calendar.get(Calendar.MONTH)+1);
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
calendar.set(Calendar.YEAR,2019);
System.out.println(calendar.get(Calendar.YEAR));
calendar.add(Calendar.YEAR,1);
System.out.println(calendar.get(Calendar.YEAR));
calendar.set(2020,1,10);
Date time = calendar.getTime();
System.out.println(calendar.getActualMaximum(Calendar.DATE));
System.out.println(calendar.getMaximum(Calendar.DATE));
}
}
- Instant(java.time包下:值不可变,线程安全)
public class InstantDemo {
public static void main(String[] args) {
Instant instant = Instant.now();
System.out.println(instant);
instant = instant.plus(Duration.ofHours(8));
Instant instant1 = Instant.now().plus(Duration.ofHours(8));
System.out.println(instant1);
System.out.println(Math.abs(instant.until(instant1, ChronoUnit.HOURS)));
}
}
- LocalDateTime(java.time包下:值不可变,线程安全)
private static final String PATTERN = "yyyy-MM-dd HH:mm:ss";
private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern(PATTERN);
public static LocalDateTime strToLocalDateTime(String dateStr){
return LocalDateTime.parse(dateStr,DATE_TIME_FORMATTER);
}
public static String localDateTimeToStr(LocalDateTime localDateTime){
return DATE_TIME_FORMATTER.format(localDateTime);
}
public class LocalDateTimeDemo {
public static void main(String[] args) {
LocalDateTime localDateTime = LocalDateTime.now();
localDateTime = localDateTime.plus(Duration.ofHours(2));
localDateTime = localDateTime.plusYears(1);
localDateTime = localDateTime.minus(1,ChronoUnit.YEARS);
System.out.println(localDateTime.get(ChronoField.YEAR));
System.out.println(localDateTime);
System.out.println(localDateTime.getMonth());
System.out.println(Month.MARCH);
System.out.println(localDateTime.getDayOfWeek());
System.out.println(DateUtil.strToLocalDateTime("2020-01-01 12:00:00"));
System.out.println(DateUtil.localDateTimeToStr(LocalDateTime.now()));
System.out.println(Instant.parse("2020-01-01 12:00:00"));
String PATTERN = "yyyy-MM-dd HH:mm:ss";
System.out.println(ZoneId.systemDefault());
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(PATTERN).withZone(ZoneId.systemDefault());
TemporalAccessor parse = formatter.parse("2020-01-01 12:00:00");
Instant instant =(Instant) parse;
System.out.println(instant);
System.out.println(parse.toString());
Instant now = Instant.now();
String format = formatter.format(now);
System.out.println(format);
}
}
格式化类
- Dateformat
- SimpleDateFormat 只针对于Date类型的数据进行格式化操作。
public abstract class DateFormat
extends Format
public class SimpleDateFormat
extends DateFormat
常用构造:
SimpleDateFormat(String pattern) 创建指定模式的格式化日期对象
常用方法:
String format(Date date) 将Date转换成String
Date parse(String source) String解析成Date
- DateTimeFormatter
- 针对于LocalDateTime类型的数据进行格式化操作。
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(PATTERN);
public class NumberFormatDemo {
public static void main(String[] args) {
demo3();
}
private static void demo3() {
NumberFormat numberFormat = new DecimalFormat("###,###.####");
BigDecimal bigDecimal = new BigDecimal("782355344326.276354371");
String format = numberFormat.format(bigDecimal.doubleValue());
System.out.println(format);
}
private static void demo2() {
NumberFormat numberFormat = new DecimalFormat("#####.##%");
String format = numberFormat.format(1.561264);
System.out.println(format);
}
private static void demo1() {
NumberFormat numberFormat = new DecimalFormat("###.##");
String format = numberFormat.format(20.561234);
System.out.println(format);
}
}
随机数类
- Random线程不安全
- ThreadLocalRandom线程安全
private static void demo1() {
ThreadLocalRandom random = ThreadLocalRandom.current();
random.nextInt(begin,bound);
for (int i = 0; i < 3; i++) {
Random random = new Random();
for (int i1 = 0; i1 < 5; i1++) {
int randomNum = random.nextInt(101);
System.out.print(randomNum+",");
}
System.out.println();
}
System.out.println("------------------------");
for (int i = 0; i < 3; i++) {
Random random = new Random(1);
for (int i1 = 0; i1 < 5; i1++) {
int randomNum = random.nextInt(101);
System.out.print(randomNum+",");
}
System.out.println();
}
}
编码解码类
- Base64(可逆)
- 编码:(加密) Encoder;解码(解密): Decoder
public class Base64Demo {
public static void main(String[] args) {
System.out.println(encoderPass("abc42rffsav"));
System.out.println(login("abc42rffsav1"));
}
private static boolean login(String loginPass) {
String encoderPass = "YWJjNDJyZmZzYXY=";
Base64.Decoder decoder = Base64.getDecoder();
byte[] decode = decoder.decode(encoderPass);
if(!loginPass.equals(new String(decode))){
return false;
}
return true;
}
private static String encoderPass(String sourcePass) {
Objects.requireNonNull(sourcePass);
Base64.Encoder encoder = Base64.getEncoder();
return encoder.encodeToString(sourcePass.getBytes());
}
}
- MessageDigest(信息摘要算法,不可逆)
public class MD5Util {
private MD5Util(){}
public static String md5(String source){
Objects.requireNonNull(source);
String salt = "lisa#&%*_";
source=source+salt;
try {
MessageDigest messageDigest = MessageDigest.getInstance("MD5");
messageDigest.update(source.getBytes());
byte[] digest = messageDigest.digest();
BigInteger bigInteger = new BigInteger(1,digest);
return bigInteger.toString(16).toUpperCase();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return null;
}
public static void main(String[] args) {
System.out.println(md5("1234"));
}
}