实现日期、时间的格式化功能
①使用Date类和Calendar类输出当前日期格式为"yyyy-MM-dd HH:mm:ss"。
②计算在当前日期的基础上加上10天后的日期,格式为"yyyy-MM-dd HH:mm:ss"。
public class DateDemo {
public static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date now = new Date();
String dateString = sdf.format(now);
System.out.println("当前日期:" + dateString);
Calendar calendar = Calendar.getInstance();
calendar.setTime(now);
calendar.add(Calendar.DATE,10);
String dateAdd = sdf.format(calendar.getTime());
System.out.println("加上10天后的日期:" + dateAdd);
}
}
计算出某个日期的周日和周一是哪一天。
①要求使用Calendar类和SimpleDateFormat类
②根据用户输入的日期字符串,计算出该日期所在周的周一和周日的日期
③并输出格式为"yyyy-MM-dd"的日期字符串。
提示:java里面星期日是一周的开始
import java.util.Calendar;
import java.util.Scanner;
import java.text.SimpleDateFormat;
public class WeekDemo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入日期(格式为yyyy-MM-dd):");
String dateString = scanner.nextLine();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
try {
calendar.setTime(sdf.parse(dateString));
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
// 计算周一的日期
calendar.add(Calendar.DAY_OF_WEEK, 2 - dayOfWeek);
String mondayString = sdf.format(calendar.getTime());
// 计算周日的日期
calendar.add(Calendar.DAY_OF_WEEK, -1);
String sundayString = sdf.format(calendar.getTime());
System.out.println("所在周的周一为:" + mondayString);
System.out.println("所在周的周日为:" + sundayString);
} catch (Exception e) {
System.out.println("日期格式不正确!");
}
}
}
根据年份和周数自动计算日期的计算器
①使用Calendar类和SimpleDateFormat类
②根据用户输入的年份和周数,计算出该周的周一和周日的日期
③并输出格式为"yyyy-MM-dd"的日期字符串。
提示:java里面星期日是一周的开始
import java.util.Calendar;
import java.util.Scanner;
import java.text.SimpleDateFormat;
public class WeekDemo2 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入年份:");
int year = scanner.nextInt();
System.out.print("请输入周数:");
int week = scanner.nextInt();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.WEEK_OF_YEAR, week);
// 计算周一的日期
calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
String mondayString = sdf.format(calendar.getTime());
// 计算周日的日期
calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
String sundayString = sdf.format(calendar.getTime());
System.out.println("第" + week + "周的周一为:" + mondayString);
System.out.println("第" + week + "周的周日为:" + sundayString);
}
}
①获取当前日期和时间,并输出当前日期,当前时间,当前日期和时间;
②获取当前时区,并打印输出;
③获取指定时区的指定时间(例如纽约时区),并打印输出;
④将当前日期时间转换成指定时区(例如纽约时区)的日期时间,并打印输出;
⑤获取当前时间戳,并打印输出;
⑥将当前时间戳转换成指定日期时间和时区(例如上海时区)的日期时间,并打印输出
import java.time.*;
public class DateTimeExample {
public static void main(String[] args) {
// 获取当前日期和时间
LocalDate localDate = LocalDate.now();
LocalTime localTime = LocalTime.now();
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println("当前日期: " + localDate);
System.out.println("当前时间: " + localTime);
System.out.println("当前日期和时间: " + localDateTime);
// 获取当前时区
ZoneId zoneId = ZoneId.systemDefault();
System.out.println("当前时区: " + zoneId);
// 获取指定时区的时间
ZoneId newYorkZoneId = ZoneId.of("America/New_York");
ZonedDateTime newYorkDateTime = ZonedDateTime.of(localDateTime, newYorkZoneId);
System.out.println("获取指定时区的时间(纽约时区): " + newYorkDateTime);
// 将当前日期时间转换成纽约时区的日期时间
ZonedDateTime currentDateTimeWithZone = localDateTime.atZone(zoneId);
ZonedDateTime newYorkDateTime2 = currentDateTimeWithZone.withZoneSameInstant(newYorkZoneId);
System.out.println("将当前日期时间转换成纽约时区的日期时间: " + newYorkDateTime2);
// 获取当前时间戳
Instant instant = Instant.now();
System.out.println("当前时间戳: " + instant);
// 将当前时间戳转换成指定时区的日期时间
Instant instant2 = Instant.now();
ZonedDateTime zonedDateTime = instant2.atZone(newYorkZoneId);
System.out.println("将当前时间戳转换成指定时区(纽约时区)的日期时间: " + zonedDateTime);
}
}
编写一个程序,该程序应用于需要展示多个时区时间,要求使用LocalDateTime类和ZoneId类实现一个能显示多时区的电子时钟,要求如下:
①获取当前时区日期时间
②将当前日期时间转换成纽约时区的日期时间
③将当前日期时间转换成东京时区的日期时间
④显示当前日期时间和纽约时区的日期时间之间的时间差(以小时为单位)
⑤显示当前日期时间和东京时区的日期时间之间的时间差(以小时为单位)
要求输出以上操作的结果。
提示:可以使用Duration类来计算时间差。
import java.time.*;
public class DateTimeExample {
public static void main(String[] args) {
// 获取当前日期和时间
LocalDate localDate = LocalDate.now();
LocalTime localTime = LocalTime.now();
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println("当前日期: " + localDate);
System.out.println("当前时间: " + localTime);
System.out.println("当前日期和时间: " + localDateTime);
// 获取当前时区
ZoneId zoneId = ZoneId.systemDefault();
System.out.println("当前时区: " + zoneId);
// 获取指定时区的指定时间
ZoneId newYorkZoneId = ZoneId.of("America/New_York");
ZonedDateTime newYorkDateTime = ZonedDateTime.of(localDateTime, newYorkZoneId);
System.out.println("获取指定时区的时间(纽约时区): " + newYorkDateTime);
// 将当前日期时间转换成纽约时区的日期时间
ZonedDateTime currentDateTimeWithZone = localDateTime.atZone(zoneId);
ZonedDateTime newYorkDateTime2 = currentDateTimeWithZone.withZoneSameInstant(newYorkZoneId);
System.out.println("将当前日期时间转换成纽约时区的日期时间: " + newYorkDateTime2);
// 获取当前时间戳
Instant instant = Instant.now();
System.out.println("当前时间戳: " + instant);
// 将当前时间戳转换成指定时区的日期时间
ZonedDateTime zonedDateTime = instant.atZone(newYorkZoneId);
System.out.println("将当前时间戳转换成指定时区(纽约时区)的日期时间: " + zonedDateTime);
}
}
编写一个程序计算机票到达的目的地的当地时间,
①输入出发日期和时间、目的地时区、旅行时间(小时数)
②计算并输出到达目的地的当地日期和时间。
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Scanner;
public class FlightBooking {
public static void main(String[] args) {
// 获取用户输入的出发日期和时间
Scanner scanner = new Scanner(System.in);
System.out.println("请输入当前时区出发日期和时间,格式为yyyy-MM-dd HH:mm:ss");
String departureDateTimeStr = scanner.nextLine();
LocalDateTime departureDateTime = LocalDateTime.parse(departureDateTimeStr, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
// 获取用户输入的旅行时间
System.out.println("请输入旅行时间(小时数):");
int travelHours = scanner.nextInt();
// 获取用户输入的目的地时区
scanner.nextLine(); // 读取多余的换行符
System.out.println("请输入目的地时区(例如America/New_York):");
String destinationTimeZone = scanner.nextLine();
// 计算到达目的地的当地日期和时间
ZoneId departureZoneId = ZoneId.systemDefault(); // 获取出发地的时区
ZonedDateTime departureZonedDateTime = departureDateTime.atZone(departureZoneId); // 将出发时间转换为出发地的ZonedDateTime对象
ZoneId destinationZoneId = ZoneId.of(destinationTimeZone); // 获取目的地的时区
ZonedDateTime destinationZonedDateTime = departureZonedDateTime.withZoneSameInstant(destinationZoneId).plusHours(travelHours); // 将出发时间转换为目的地时区的ZonedDateTime对象,并加上旅行时间
// 输出结果
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
System.out.println("到达目的地的当地日期和时间为:" + destinationZonedDateTime.format(formatter));
}
}