JAVA---日期小练习
-
demo1,demo2日期转换
-
demo4可以自定义获取6个随机数字或字母(0~9,a~z,A~Z混合一起)
-
demo5自定义字符串获取6个随机组成的字符串
-
demo6求两个日期间隔
-
demo7给某个日期加天数
package exercises;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.Calendar;
import java.util.Date;
import java.util.Random;
import java.util.concurrent.ThreadLocalRandom;
public class Exercise {
public static void main(String[] args) {
//String时间 与 日期对象相互转换
// String dateStr = "2020-01-01 12:00:00";
// System.out.println(demo1(dateStr));//Wed Jan 01 12:00:00 CST 2020
// Date date = new Date();//当前计算机时间
// System.out.println(demo2(date));
// String 转 LocalDateTime
// System.out.println(LocalDateTime.parse(dateStr, FORMATTER));//2020-01-01T12:00
// LocalDateTime localDateTime = LocalDateTime.now();
// System.out.println(localDateTime.format(FORMATTER));
//demo7(new Date(), 5);
demo3();
}
private static void demo7(Date date, int day) {
// long time = date.getTime();
// System.out.println(new Date(time + day * 24 * 3600 * 1000));
//Calendar
//date转Calendar
/* Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DATE,day);
Date time = calendar.getTime();
System.out.println(time);*/
//LocalDate
// System.out.println(LocalDate.of(2019, Month.OCTOBER, 10).plus(Period.ofDays(day)));
System.out.println(LocalDate.of(2019, Month.OCTOBER, 10).plusDays(day));
}
private static void demo6() {
LocalDateTime localDateTime1 = LocalDateTime.now();
LocalDateTime localDateTime2 = LocalDateTime.of(2021, Month.MAY, 24, 12, 30, 30);
//间隔 小时
System.out.println(Math.abs(localDateTime1.until(localDateTime2, ChronoUnit.HOURS)));
}
private static void demo5() {
String str = "小黑子鸡你太美!+daw234";
Random random = new Random();
StringBuilder builder = new StringBuilder();
int length = str.length();
for (int i = 0; i < 6; i++) {
builder.append(str.charAt(random.nextInt(length)));
}
System.out.println(builder);
}
private static void demo4() {
//可以自定义获取6个随机数字或字母(0~9,a~z,A~Z混合一起)
// Random random = new Random();
ThreadLocalRandom random = ThreadLocalRandom.current();
StringBuilder builder = new StringBuilder();
for (int i = 0; i < 6; i++) {
int num = random.nextInt(48, 123);// 48-57 97-122 65-90
if (num >= 48 && num <= 57) {//0-9
builder.append(num - 48);
} else if ((num >= 65 && num <= 90) || (num >= 97 && num <= 122)) {//A-Z a-z
builder.append((char) num);
} else {
i--;
}
}
System.out.println(builder.toString());
}
private static void demo3() {
//使用Calendar类的相关属性以及方法
//1.获得Calendar类对象
Calendar calendar = Calendar.getInstance();//获得当前系统默认时间
//calendar.set(Calendar.MONTH, Calendar.FEBRUARY);
calendar.set(Calendar.DAY_OF_MONTH, 1);
int totalDays = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
System.out.println("日\t1\t2\t3\t4\t5\t6");
//当前月1号 属于这一周的第几天
int num = calendar.get(Calendar.DAY_OF_WEEK);
for (int i = 1; i < num; i++) {
System.out.print("\t");
}
for (int i = 1; i <= totalDays; i++) {
System.out.print(i + "\t");
calendar.set(Calendar.DAY_OF_MONTH, i);
int day = calendar.get(Calendar.DAY_OF_WEEK);
if (day %7==0) {
System.out.println();
}
}
}
private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
// private static final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//ThreadLocal
private static final ThreadLocal<DateFormat> LOCAL = new ThreadLocal() {
@Override
protected SimpleDateFormat initialValue() {
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
}
};
private static String demo2(Date date) {
return LOCAL.get().format(date);
}
private static Date demo1(String dateStr) {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//SimpleDateFormat dateFormat = new SimpleDateFormat();
try {
Date date = LOCAL.get().parse(dateStr);
return date;
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
}