JAVA时间处理

实现日期、时间的格式化功能

①使用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));
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值