JAVA— 时间格式与动态时间获取应用总结

目录

Java获取日期常用格式

java实现获取当前年、月、日 、小时 、分钟、 秒、 毫秒

Java线程动态时间:

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");
		}
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值