本视频是解读性视频,所以希望您已经看过了本知识点的内容,并且编写了相应的代码之后,带着疑问来观看,这样收获才多。 不建议一开始就观看视频
![]() 5分45秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器。 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)。 chrome 的 视频下载插件会影响播放,如 IDM 等,请关闭或者切换其他浏览器 示例 1 : 日期转字符串 示例 2 : 字符串转日期 示例 3 : 练习-日期格式化 示例 4 : 答案-日期格式化 y 代表年 M 代表月 d 代表日 H 代表24进制的小时 h 代表12进制的小时 m 代表分钟 s 代表秒 S 代表毫秒 package date;
//
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestDate {
public static void main(String[] args) {
//y 代表年
//M 代表月
//d 代表日
//H 代表24进制的小时
//h 代表12进制的小时
//m 代表分钟
//s 代表秒
//S 代表毫秒
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS" );
Date d= new Date();
String str = sdf.format(d);
System.out.println("当前时间通过 yyyy-MM-dd HH:mm:ss SSS 格式化后的输出: "+str);
SimpleDateFormat sdf1 =new SimpleDateFormat("yyyy-MM-dd" );
Date d1= new Date();
String str1 = sdf1.format(d1);
System.out.println("当前时间通过 yyyy-MM-dd 格式化后的输出: "+str1);
}
}
package date;
//
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestDate {
public static void main(String[] args) {
SimpleDateFormat sdf =new SimpleDateFormat("yyyy/MM/dd HH:mm:ss" );
String str = "2016/1/5 12:12:12";
try {
Date d = sdf.parse(str);
System.out.printf("字符串 %s 通过格式 yyyy/MM/dd HH:mm:ss %n转换为日期对象: %s",str,d.toString());
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
准备一个长度是9的日期数组
使用1970年-2000年之间的随机日期初始化该数组 按照这些日期的时间进行升序排序 比如 1988-1-21 12:33:22 就会排在 1978-4-21 19:07:23 前面,因为它的时间更小,虽然日期更大
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
本视频是解读性视频,所以希望您已经看过了本答案的内容,带着疑问来观看,这样收获才多。 不建议一开始就观看视频
![]() 10分51秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器。 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)。 chrome 的 视频下载插件会影响播放,如 IDM 等,请关闭或者切换其他浏览器 package date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestDate {
public static void main(String[] args) {
int yearStart = 1970;
int yearEnd = 2000;
Date[] ds = new Date[9];
for (int i = 0; i < ds.length; i++) {
ds[i] = getRandomDate(yearStart, yearEnd);
}
System.out.println("得到的随机日期数组:");
for (int i = 0; i < ds.length; i++) {
System.out.print(toString(ds[i])+"\t");
if(2==i%3)
System.out.println();
}
//选择法排序
for (int j = 0; j < ds.length-1; j++) {
for (int i = j+1; i < ds.length; i++) {
String strTimeI = toString(ds[i],"HHmmss");
String strTimeJ = toString(ds[j],"HHmmss");
int lTimeI = Integer.parseInt(strTimeI);
int lTimeJ = Integer.parseInt(strTimeJ);
if( lTimeI<lTimeJ ){
Date temp = ds[j];
ds[j] = ds[i];
ds[i] = temp;
}
}
}
System.out.println("排序后的随机日期数组:");
for (int i = 0; i < ds.length; i++) {
System.out.print(toString(ds[i])+"\t");
if(2==i%3)
System.out.println();
}
}
public static String toString(Date d) {
return toString(d, "yyyy-MM-dd HH:mm:ss");
}
public static String toString(Date d, String format) {
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.format(d);
}
private static Date getRandomDate(int yearStart, int yearEnd) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
try {
Date dStart = sdf.parse(String.valueOf(yearStart)); // 1970
Date dEnd = sdf.parse(String.valueOf(yearEnd + 1)); // 2001 不是 2000,要在2001的基础上减少以毫秒,才表示2000最后一刻
long timeStart = dStart.getTime();
long timeEnd = dEnd.getTime() - 1;
long timeRandom = (long) (timeStart + Math.random() * (timeEnd - timeStart));
return new Date(timeRandom);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}
HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。
![]()
问答区域
2025-09-04
代码
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
2025-01-26
这个是我写的,感觉有点麻烦,求指教
2 个答案
chenwang2004 跳转到问题位置 答案时间:2025-05-10 package characteor;
import java.util.Arrays;
import java.util.Date;
import java.util.Random;
import static java.util.Arrays.sort;
public class practice {
public static void main(String[] args) {
Date[] dateArray = new Date[9];
Random random = new Random();
Date d1 = new Date("1970/1/1 0:0:0");
Date d2 = new Date("2000/12/31 23:59:59");
for (int i = 0; i < 9; i++) {
long randomTime = random.nextLong(d1.getTime(), d2.getTime() + 1);
dateArray[i] = new Date(randomTime);
}
Arrays.sort(dateArray);
for (Date each:dateArray) {
System.out.println(each);
}
}
}
Lzzlove789 跳转到问题位置 答案时间:2025-04-09 看我的吧,下面哪个问题的方法我试了一下用long.parselong这个是跑不出来结果的,强行将字符串转换成long类型是会报错的。我最后直接字符串之间相互比较了只比较时间大小不比日期,要比日期可以直接用Arrays.sort()
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
2024-07-04
一种更容易理解且更简洁的方式求解时间排序问题
2024-03-13
使用随机数生成1970-200年的时间
2023-02-27
随机数问题
提问太多,页面渲染太慢,为了加快渲染速度,本页最多只显示几条提问。还有 97 条以前的提问,请 点击查看
提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
|