本视频是解读性视频,所以希望您已经看过了本知识点的内容,并且编写了相应的代码之后,带着疑问来观看,这样收获才多。 不建议一开始就观看视频
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公众号,关注后实时获知最新的教程和优惠活动,谢谢。
问答区域
2024-07-04
一种更容易理解且更简洁的方式求解时间排序问题
2 个答案
Gardenia357 跳转到问题位置 答案时间:2024-09-17 public void test2() {
Date fromDate = new Date(1970, 0, 1, 0, 0, 0);
Date toDate = new Date(1999, 11, 31, 23, 59, 59);
long span = toDate.getTime() - fromDate.getTime();
String[] date = new String[9];
// Date[] date = new Date[9];
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
for (int i = 0; i < 9; i++) {
long time = (long) (Math.random() * span);
Date tmp = new Date(time);
String str = sdf.format(tmp);
date[i] = str;
}
System.out.println("排序前:");
showTime(date);
Arrays.sort(date, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
Date date1 = null, date2 = null;
try {
date1 = sdf.parse(o1);
} catch (ParseException e) {
e.printStackTrace();
}
try {
date2 = sdf.parse(o2);
} catch (ParseException e) {
e.printStackTrace();
}
if (date1.getHours() != date2.getHours()) return date1.getHours() - date2.getHours();
if (date1.getMinutes() != date2.getMinutes()) return date1.getMinutes() - date2.getMinutes();
if (date1.getSeconds() != date2.getSeconds()) return date1.getSeconds() - date2.getSeconds();
return 0;
}
});
System.out.println("排序后:");
showTime(date);
}
public void showTime(String date[]) {
for (int i = 0; i < date.length; i++) {
System.out.print(date[i] + "\t\t");
if ((i + 1) % 3 == 0) System.out.println();
}
}
织织 跳转到问题位置 答案时间:2024-07-25 public static void main(String[] args) {
// 准备一个长度是9的日期数组
// 使用1970年-2000年之间的随机日期初始化该数组
Date[] dates = new Date[9];
System.out.println("得到的随机数组:");
for (int i = 0; i < dates.length; i++) {
int year = (int) (Math.random() * 21 + 1970);
int month = (int) (Math.random() * 12 + 1);
int day = 0;
if (month == 2) {
if (year % 4 == 0) {
day = (int) (Math.random() * 29 + 1);
} else {
day = (int) (Math.random() * 28 + 1);
}
} else if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {
day = (int) (Math.random() * 31 + 1);
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
day = (int) (Math.random() * 30 + 1);
}
int hour = (int) (Math.random() * 24);
int minute = (int) (Math.random() * 60);
int second = (int) (Math.random() * 60);
String dateStr = String.format("%d-%02d-%02d %02d:%02d:%02d",year, month, day, hour, minute, second);
try {
dates[i] = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(dateStr);
} catch (ParseException e) {
e.printStackTrace();
}
System.out.print(dateStr + " ");
if((i+1) % 3 == 0) {
System.out.println();
}
}
System.out.println("排序后的随机数组:");
Date d;
for (int i = 0; i < dates.length; i++) {
for (int j = i+1; j < dates.length; j++) {
if(dates[i].getHours() > dates[j].getHours()) {
d = dates[j];
dates[j] = dates[i];
dates[i] = d;
} else if (dates[i].getHours() == dates[j].getHours()) {
if(dates[i].getMinutes() > dates[j].getMinutes()) {
d = dates[j];
dates[j] = dates[i];
dates[i] = d;
}
}
}
String format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(dates[i]);
System.out.print(format + " ");
if((i+1) % 3 == 0) {
System.out.println();
}
}
}
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
2024-03-13
使用随机数生成1970-200年的时间
2 个答案
123456yyds 跳转到问题位置 答案时间:2024-10-04 Fri May 05 06:33:16 SGT 1972
Fri Mar 29 18:02:11 SGT 1974
Tue Jan 17 17:38:54 SGT 1978
Wed Aug 02 01:27:04 SGT 1978
Mon Sep 10 02:51:59 SGT 1984
Sat Feb 18 06:28:42 SGT 1989
Tue May 09 01:28:19 SGT 1989
Sat Jul 24 22:08:31 SGT 1993
Tue Dec 29 20:32:39 SGT 1998
虚心求学 跳转到问题位置 答案时间:2024-07-04 注意审题哦,题目要求的是仅依据“时间”排序,也就是按照 时分秒 的顺序从小到大排序。
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
2023-02-27
随机数问题
2022-12-06
答案:日期格式化
2022-11-11
答案-思路生成日期后,提取时间排序
提问太多,页面渲染太慢,为了加快渲染速度,本页最多只显示几条提问。还有 95 条以前的提问,请 点击查看
提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
|