您的位置:首页 > 编程语言 > Java开发

04 JAVA 常用类补充 Scanner和日历

2015-07-27 20:46 567 查看
哎哎哎,我好懒啊,整天watch variety shows and stay up all night for nothing meaningful,又没有钱去玩~(天气好热,科科~贱人就是矫情,还不想去找工作,自己这么说自己也是够了,双重人格~)—— bulltrue少年

一、Scanner

Scanner可以从特定文件(我们需要提供文件或者文件路径),输入流,字符串等产生对应值(使用正则表达式parse原语类型和字符串)

主要方法:

- hasNext() 假如输入还有别的token返回布尔值

- hasNext(正则表达式) 假如下个完整的token匹配这个正则表达式返回布尔值

- hasNextLine() 可以加入正则表达式

- hasNextInt() 可以加入正则表达式

- hasNextDouble() 可以加入正则表达式

- String next() 返回下一个token

String next(正则表达式)

- int nextInt() 可以加入正则表达式

- double nextDouble() 可以加入正则表达式

- String nextLine() 返回当前行

- close()

- useDelimiter(分隔符)

import java.util.*;

public class testScanner {
public static void main(String[] args) {
String c = "";
Scanner sc1 = new Scanner(System.in);

while(sc1.hasNext()){
c = sc1.next();
if(c.equals("*")){
break;
}
System.out.println(c);
}
sc1.close();
}
}


结果:

Amy Mark Anna Terrisa *

Amy

Mark

Anna

Terrisa

二、日期



- Date (时刻<->Date对象)

获取一个特定的瞬间时刻(精确到毫秒,long类型,从1970.1.1 00.00.00开始)并构造成Date类型对象

Date() //默认使用当前时间

Date(long)

主要方法:

- long getTime() 返回某个时刻

- setTime(long time) 设置Date对象来表示某个时刻

- boolean after(Date)

- boolean before(Date)

System.currentTimeMillis() 获取当前时刻

- DateFormat(抽象类,字符串<->Date对象)

子类SimpleDateFormat

SimpleDateFormat()

SimpleDateFormat(String pattern)

Date and Time PatternResult
"yyyy.MM.dd G 'at' HH:mm:ss z"
2001.07.04 AD at 12:08:56 PDT
"EEE, MMM d, ''yy"
Wed, Jul 4, '01
"h:mm a"
12:08 PM
"hh 'o''clock' a, zzzz"
12 o'clock PM, Pacific Daylight Time
"K:mm a, z"
0:08 PM, PDT
"yyyyy.MMMMM.dd GGG hh:mm aaa"
02001.July.04 AD 12:08 PM
"EEE, d MMM yyyy HH:mm:ss Z"
Wed, 4 Jul 2001 12:08:56 -0700
"yyMMddHHmmssZ"
010704120856-0700
"yyyy-MM-dd'T'HH:mm:ss.SSSZ"
2001-07-04T12:08:56.235-0700
"yyyy-MM-dd'T'HH:mm:ss.SSSXXX"
2001-07-04T12:08:56.235-07:00
"YYYY-'W'ww-u"
2001-W27-3
- String format(Date)

- Date parse(String)

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class testDate {
public static void main(String[] args) {
Date d = new Date();
long ts = d.getTime();

System.out.println(ts+"--"+System.currentTimeMillis());
d.setTime(1345777767889L);
System.out.println(d);

DateFormat df = new SimpleDateFormat("yyyy.MM.dd");
System.out.println(df.format(d));
String date = "2015.8.1"; //要注意格式的统一,比如2015-8-1就不可以啦
try {
System.out.println(df.parse(date));
} catch (ParseException e) {
e.printStackTrace();
}
结果:

1437999349348--1437999349348

Fri Aug 24 11:09:27 CST 2012

2012.08.24

Sat Aug 01 00:00:00 CST 2015

- Calendar(抽象类)
执行与日期处理有关的操作,它的子类GregorianCalendar表示的是阳历

主要方法:

- Date getTime() 获取表达日历时间值得日期对象

- setTime(Date)

- long getTimeInMillis() 获取表达日历时间的long值

- setTimeInMillis(long)

- getTimeZone() 获取时区

- add(区域,数值)

- set(区域,数值)

- get(区域)

import java.util.*;

public class testCalendar {
public static void main(String[] args) {
//Calendar c1 = new GregorianCalendar();
Calendar c = Calendar.getInstance(); //用默认的timezone和locale来创建日历
Date date = new Date();
c.setTime(date);
System.out.println(c.get(Calendar.DAY_OF_WEEK));	//一周的第几天
System.out.println(c.get(Calendar.DAY_OF_YEAR));	//一年中的第几天
System.out.println(c.get(Calendar.DAY_OF_MONTH));	//一月中的第一天
System.out.println(c.get(Calendar.DATE));	//日期
System.out.println(c.get(Calendar.HOUR));	//显示目前几点
System.out.println(c.get(Calendar.YEAR));
System.out.println(c.get(Calendar.WEEK_OF_MONTH));	//一个月中的第几周
System.out.println(c.get(Calendar.WEEK_OF_YEAR));	//一年中的第几周
}
}


习题:可视化日历

import java.text.*;
import java.util.*;

public class VisualCalendar {
public static void main(String[] args) {
System.out.print("输入日期,格式为YYYY-MM-DD:");
Scanner sn = new Scanner(System.in);
String s = sn.next();
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");

try {
Date date = df.parse(s);
System.out.println(date+"\n");
Calendar c = new GregorianCalendar();
c.setTime(date);
int day = c.get(Calendar.DATE);
c.set(Calendar.DATE, 1);
int day_week = c.get(Calendar.DAY_OF_WEEK);
int month = c.getActualMaximum(Calendar.DATE);
System.out.println("日\t一\t二\t三\t四\t五\t六");

for(int j = 1; j < day_week; j++) {
System.out.print(" \t");
}

for(int i = 1; i <= month; i++) {
if(day == i)
System.out.print("*");
System.out.print(i+"\t");
if((i+day_week-1)%7 == 0)
System.out.println("\n");
}
} catch (ParseException e) {
System.out.println("格式错误!");
}
}
}


结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: