第十二届蓝桥杯省赛 Java 大学 B 组—时间显示—满分百分题解

第十二届蓝桥杯省赛 Java 大学 B 组—时间显示

在这里插入图片描述
在这里插入图片描述


一、解题思路

1、解法一( Java )

解法思路:模拟
res int 型不能满足所有评测用例,应该定义为 long
rem 是东八区时间 8 个小时的偏移量毫秒数
SimpleDateFormat("HH:mm:ss")时间输出格式(注意分钟对应是小写的 mm ,是为了区分月份对应大写的 MM

Date date2 = new Date(0);
System.out.println(date2);
//输出结果是Thu Jan 01 08:00:00 CST 1970

伪代码如下:

/**
 * @author Listen 1024
 * @description 第十二届蓝桥杯省赛 Java 大学 B 组—时间显示—满分题解
 * @date 2022-3-28 16:10:29
 */
import java.text.SimpleDateFormat;
 
public class Main {
	public static void main(String[] args) {
		long rem = 8 * 60 * 60 * 1000;//定义偏移量
		Scanner scanner = new Scanner(System.in);
		long res = scanner.nextLong();// 获取经过的毫秒数
		Date date = new Date(res - rem);
		SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");//定义输出格式
		String string = sdf.format(date);
		System.out.println(string);
		scanner.close();
	}
}

1、解法二( Java )

解法思路:模拟
res int 型不能满足所有评测用例,应该定义为 long
rem 是东八区时间 8 个小时的偏移量毫秒数
setTime() 设置时间(减去时间偏移量 rem
toString() Date类重写了 toString() 方法,输出格式是EEE MMM dd HH:mm:ss zzz yyyy (举个栗子:毫秒数 67567567567 对应的具体时间是 Tue Feb 22 00:46:07 CST 1972),所以需要使用 subString() 方法截取指定 11 - 19部分输出(空格算一个字符)
substring(int beginIndex, int endIndex) 返回一个新字符串,它是此字符串的一个子字符串。该子字符串从指定的 beginIndex 处开始,直到索引 endIndex - 1 处的字符。因此,该子字符串的长度为 endIndex-beginIndex

伪代码如下:

/**
 * @author Listen 1024
 * @description 第十二届蓝桥杯省赛 Java 大学 B 组—时间显示—满分题解
 * @date 2022-3-28 16:10:29
 */
import java.util.Date;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		long rem = 8 * 60 * 60 * 1000;
		long res = scanner.nextLong();
		Date date = new Date();
		date.setTime(res - rem);
		System.out.println(date.toString().substring(11, 19));
	}

}

运行结果截图如下:
运行结果截图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值