目录
java实现获取当前年、月、日 、小时 、分钟、 秒、 毫秒
Java获取日期常用格式
第一个直接上代码:
package org.time;
import java.text.DateFormat;
import java.util.Calendar;
import java.util.Date;
public class Time {
public void getTimeByDate() {
Date date = new Date();
// 日期格式,精确到日
DateFormat df1 = DateFormat.getDateInstance();
System.out.println(df1.format(date));
// 精确到时分秒
DateFormat df2 = DateFormat.getDateTimeInstance();
System.out.println(df2.format(date));
// 只显示时分秒
DateFormat df3 = DateFormat.getTimeInstance();
System.out.println(df3.format(date));
// 显示日期,周,上下午,精确到秒的时间
DateFormat df4 = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL);
System.out.println(df4.format(date));
// 显示日期,上下午,时间(精确到秒)
DateFormat df5 = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);
System.out.println(df5.format(date));
// 显示日期,上下午,时间(精确到分)
DateFormat df6 = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);
System.out.println(df6.format(date));
// 显示日期,时间(精确到分)
DateFormat df7 = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM);
System.out.println(df7.format(date));
}
public void getTimeByCalendar() {
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR); // 获取年份
int month = cal.get(Calendar.MONTH);// 获取月份
int day = cal.get(Calendar.DATE);// 获取日
int hour = cal.get(Calendar.HOUR);// 获取小时
int minute = cal.get(Calendar.MINUTE);// 获取分钟
int second = cal.get(Calendar.SECOND);// 获取秒
int WeekOfYear = cal.get(Calendar.DAY_OF_WEEK)-1;// 获取一周的第几天
System.out.println("现在的时间是:公元" + year + "年" + month + "月" + day + "日 " + hour + "时" + minute + "分" + second
+ "秒 星期" + WeekOfYear);
}
}
测试:
package org.test;
import org.time.Time;
public class TimeTest {
public static void main(String[] args) {
Time time = new Time();
time.getTimeByDate();
System.out.println("--------------------------------------------");
time.getTimeByCalendar();
}
}
运行结果:
格式化输出日期时间:(2018-12-25 10:12:37)
Date date =new Date();
SimpleDateFormat dFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String time=dFormat.format(date);
System.out.println(time);
计算某一月份的最大天数:
Calendar time=Calendar.getInstance();
time.clear();
time.set(Calendar.YEAR,2018); //year 为 int 2018为第二个参数year
time.set(Calendar.MONTH,12-1);//注意,Calendar对象默认一月为0 ,12为参数月份
int day=time.getActualMaximum(Calendar.DAY_OF_MONTH);//本月份的天数
System.out.println(day);
计算某年的一天是一年中的第几周:
Calendar cal=Calendar.getInstance();
cal.set(Calendar.YEAR, 2018);
cal.set(Calendar.MONTH, 12-1); //注意:默认一月为0
cal.set(Calendar.DAY_OF_MONTH, 25-1); //默认星期日为一周的第一天
int weekno=cal.get(Calendar.WEEK_OF_YEAR);
System.out.println(weekno);
计算一年中的第几星期是几号:
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
Calendar cal=Calendar.getInstance();
cal.set(Calendar.YEAR, 2018);
cal.set(Calendar.WEEK_OF_YEAR, 51);
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);//某一周的星期一时间
System.out.println(df.format(cal.getTime()));
以上学习总结参考:http://www.blogjava.net/xiaoyi/articles/295044.html
java实现获取当前年、月、日 、小时 、分钟、 秒、 毫秒
package org.time;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class TimeUtil01 {
public static String FORMAT_SHORT="yyyy-MM-dd";
public static String FORMAT_LONG="yyyy-MM-dd HH:mm:ss";
public static String FORMAT_FULL="yyyy-MM-dd HH:mm:ss.S";
public static String FORMAT_SHORT_CN="yyyy年MM月dd日 HH时mm分ss秒";
public static String FORMAT_LONG_CN="yyyy年MM月dd日 HH时mm分ss秒SSS毫秒";
/*
* 获取当前时间 年月日时分秒毫秒
*/
public static String getTimeString(){
SimpleDateFormat df = new SimpleDateFormat(FORMAT_FULL);
Calendar calendar = Calendar.getInstance();
return df.format(calendar.getTime());
}
/*
* 获取年份
*/
public static String getYear(Date date){
SimpleDateFormat sdf=new SimpleDateFormat("yyyy");
Calendar calendar =Calendar.getInstance();
return sdf.format(calendar.getTime());
}
/*
* 获取月份
*/
public static int getMonth(Date date){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(Calendar.MONTH)+1;
}
/*
* 获取日分
*/
public static int getDay(Date date){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(Calendar.DAY_OF_MONTH);
}
/*
* 获取小时
*/
public static int getHour(Date date){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(Calendar.HOUR_OF_DAY);
}
/*
* 获取分钟
*/
public static int getMinute(Date date){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(Calendar.MINUTE);
}
/*
* 获取秒
*/
public static int getSecond(Date date){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(Calendar.SECOND);
}
/*
* 获取毫秒
*/
public static long getMillis(Date date){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.getTimeInMillis();
}
public static void main(String[] args) {
System.out.println(getTimeString());
System.out.println("返回日期年份:"+getYear(new Date()));
System.out.println("返回月份:"+getMonth(new Date()));
System.out.println("返回当天日份:"+getDay(new Date()));
System.out.println("返回当天小时:"+getHour(new Date()));
System.out.println("返回当天分:"+getMinute(new Date()));
System.out.println("返回当天秒:"+getSecond(new Date()));
System.out.println("返回当天毫秒:"+getMillis(new Date()));
}
}
参考:http://yuncode.net/code/c_5194eee4e69e95
https://blog.csdn.net/zs20082012/article/details/56841368/
Java线程动态时间:
package org.time;
import java.awt.Dimension;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class TimeTest extends JFrame implements Runnable {
private JFrame frame;
private JPanel timePanel;
private JLabel timeLabel;
private JLabel displayArea;
private String DEFAULT_TIME_FORMAT = "HH:mm:ss";
private int ONE_SECOND = 1000;
public TimeTest() {
timePanel = new JPanel();
timeLabel = new JLabel("CurrentTime: ");
displayArea = new JLabel();
timePanel.add(timeLabel);
timePanel.add(displayArea);
this.add(timePanel);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setSize(new Dimension(200, 70));
this.setLocationRelativeTo(null);
}
public void run() {
while (true) {
SimpleDateFormat dateFormatter = new SimpleDateFormat(DEFAULT_TIME_FORMAT);
displayArea.setText(dateFormatter.format(Calendar.getInstance().getTime()));
try {
Thread.sleep(ONE_SECOND);
} catch (Exception e) {
displayArea.setText("Error!!!");
}
}
}
public static void main(String arg[]) {
TimeTest df2 = new TimeTest();
df2.setVisible(true);
Thread thread1 = new Thread(df2);
thread1.start();
}
}
参考学习:https://www.jb51.net/article/53597.htm
Java日历显示制作
package org.time;
import java.util.Scanner;
/**
* 日历打印
* @author Lenovo
*
*/
public class PrintCalendar {
/**
* 判断是否是润年
* @param year
* @return true or false
*/
public boolean isLeapYear(int year) {
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
return true;
} else {
return false;
}
}
/**
* 确定该年份各个月的具体天数:这个方法返回的是一个储存了各个月的天数的数组,其中的每个元素作为日历主体打印的计数器。
* @param year
* @return
*/
public int[] makeSureDays(int year) {
int[] leapDays = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int[] nonLeapDays = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
if (isLeapYear(year)) {//闰年的天数
return leapDays;
} else {
return nonLeapDays;//平年的天数
}
}
/**
* 在printMonthTitle()方法里调用了getMonthName()的方法。
* 它的功能是将每个月份由整型常量转化为字符串常量(为了简便,主方法中月份是个整型变量)。
* @param month
* @return
*/
public String getMonthName(int month) {
String monthName = "";
switch (month) {
case 1:
monthName = "January";
break;
case 2:
monthName = "February";
break;
case 3:
monthName = "March";
break;
case 4:
monthName = "April";
break;
case 5:
monthName = "May";
break;
case 6:
monthName = "June";
break;
case 7:
monthName = "July";
break;
case 8:
monthName = "August";
break;
case 9:
monthName = "September";
break;
case 10:
monthName = "October";
break;
case 11:
monthName = "November";
break;
case 12:
monthName = "December";
}
return monthName;
}
/**
* 打印日历的表头部分:每个月日历的头部大同小异,把打印日历头作为一个模块独立出来,程序更加简洁。
* @param month
* @param year
*/
public void printMonthTitle(int month, int year) {
String monthName = getMonthName(month);
System.out.println(" " + monthName + " " + year);
System.out.println("----------------------------------");
System.out.println(" Sun Mon Tue Wed Thu Fri Sat ");
}
/**
* 打印日历的主体部分:这部分的结构复杂些,主要是定义了一个打印的追踪track。
* 程序通过它控制何时换行(每7天一换),并且返回表示下个月的第一天是星期几的整型值。
* @param whatDay
* @param month
* @param year
* @return
*/
public int printMonthBody(int whatDay, int month, int year) {
int track = 0; //定义一个变量作为打印追踪
for (int j = 0; j < (whatDay % 7); j++) { //打印一周的天数
System.out.print(" ");
track++;
}
int[] days = makeSureDays(year);
for (int i = 1; i <= days[month - 1]; i++) { //打印月份
System.out.printf("%4d", i);
track++;
if (track % 7 == 0) { //一排7天打印完即可换行
System.out.printf("\n");
}
}
System.out.printf("\n"); //一个月的天数打印完后返回下一个月的第一天是星期几
return (track % 7);
}
/**
* 主方法
* @param args
*/
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入年份:");
int year = input.nextInt();
System.out.print("请输入这年的第一天是星期几(数字表示):");
int startDay = input.nextInt();
PrintCalendar printCalendar = new PrintCalendar();
printCalendar.printMonthTitle(1, year);
int whatDay = printCalendar.printMonthBody(startDay, 1, year);
for (int month = 2; month <= 12; month++) {
printCalendar.printMonthTitle(month, year);
whatDay = printCalendar.printMonthBody(whatDay, month, year);
}
}
}
学习参考其他地址:
https://blog.csdn.net/weixin_42313005/article/details/83097970
https://blog.csdn.net/bj15114817915/article/details/62431237/
https://cloud.tencent.com/developer/article/1337440
https://cloud.tencent.com/developer/article/1344866
package org.time;
import java.util.Scanner;
public class Wan_nian_li {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入年份:");
int year = scanner.nextInt();
System.out.println("请输入月份:");
int month = scanner.nextInt();
int sumyear = 0; // 年的总天数
int summonth = 0; // 月的总天数
int week = 0;
for (int i = 1990; i < year; i++) {
if ((i % 400 == 0) || (i % 4 == 0 && i % 100 != 0)) {
sumyear = sumyear + 366;
} else {
sumyear = sumyear + 365;
}
}
for (int j = 1; j < month; j++) {
switch (j) {
case 4:
case 6:
case 9:
case 11:
summonth = summonth + 30;
break;
case 2:
if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0)) {
summonth = summonth + 29;
} else {
summonth = summonth + 28;
}
break;
default:
summonth = summonth + 31;
break;
}
}
System.out.print("日\t一\t二\t三\t四\t五\t六");
System.out.println();
week = (summonth + sumyear) % 7 + 1;
for (int i = 1; i <= week; i++) {
if (week == 7) {
break;
} else {
System.out.print("\t");
}
}
switch (month) {
case 4:
case 6:
case 9:
case 11:
summonth = 30;
break;
case 2:
if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0)) {
summonth = 29;
} else {
summonth = 28;
}
break;
default:
summonth = 31;
break;
}
int a = week;
for (int i = 1; i <= summonth; i++) {
if (a == 7) {
a = 0;
i--;
continue;
} else if ((i - 1) % 7 + week == 7) {
System.out.println();
}
System.out.print(i + "\t");
}
}
}