日期格式转化

问题:日期格式转换:从键盘读入2003-11-29 ,并转换为 November 29,2003格式输出。

思路:

1.控制台输入字符串:"2003-11-29",将字符串转化为data型。

2.将data型数据转换成美式时间输出格式。

关键方法:parse()返回一个Date类型数据,format()返回一个StringBuffer类型的数据

程序:

package time_format_Daquan;

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

/**
 * Created by wln on 2017/9/11.
 * Description:parse()返回一个Date类型数据,format()返回一个StringBuffer类型的数据
   参照Url:http://blog.csdn.net/woshisap/article/details/6617118
 */
public class TestParseTime {

    public TestParseTime() throws ParseException {

        Scanner objScan = new Scanner(System.in);//扫描控制台输入
        System.out.print("请输入日期:");
        String strInput = "";

        while(true) {//可多次输入
            strInput = objScan.nextLine();//获取输入的内容

            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//日期和时间格式的模式 如:yyyyMMDD

            Date date = sdf.parse(strInput);
            System.out.println("字符串转化为data类型:" + date);

            // 创建“简体中文”的Locale
//            Locale localeCN = Locale.SIMPLIFIED_CHINESE;
//            Locale localeCN = new Locale("zh", "CN");
            // 创建“英文/美国”的Locale
            Locale locale = new Locale("en", "US");
//
            //因为日期格式化类 DateFormat类为抽象类 所以不能new ,所以直接用 类.静态方法
//            DateFormat shortDateFormat = DateFormat.getDateInstance(DateFormat.SHORT, locale);
//            DateFormat mediumDateFormat = DateFormat.getDateInstance(DateFormat.MEDIUM, locale);
            DateFormat longDateFormat = DateFormat.getDateInstance(DateFormat.LONG, locale);
//            DateFormat longDateFormatCN = DateFormat.getDateInstance(DateFormat.LONG, localeCN);
//            DateFormat fullDateFormat = DateFormat.getDateInstance(DateFormat.FULL, locale);

//            System.out.println(shortDateFormat.format(date));
//            System.out.println(mediumDateFormat.format(date));
            System.out.println(">>>" + longDateFormat.format(date));
//            System.out.println(longDateFormatCN.format(date));
//            System.out.println(fullDateFormat.format(date));
//            break;
        }

        //查看Locale支持的全部区域,将整个while()注释掉运行下面
//        Locale[] ls = Locale.getAvailableLocales();
//        for (Locale locale:ls) {
//            System.out.println("locale :"+locale);
//        }

        //取得系统的时间:从1970年1月1日开始到取得系统时间为止所经过的毫秒数,没什么用
//        System.out.print(System.currentTimeMillis());

    }

    public static void main(String[] args) {
        try {
            new TestParseTime();
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }

}

/*
*
一、java.util.Scanner:简化文本扫描。这个类最实用的地方表现在获取控制台输入。

二、如果说Scanner使用简便,不如说Scanner的构造器支持多种方式,构建Scanner的对象很方便。

    可以从字符串(Readable)、输入流、文件等等来直接构建Scanner对象,有了Scanner了,
就可以逐段(根据正则分隔式)来扫描整个文本,并对扫描后的结果做想要的处理。

三、Scanner默认使用空格作为分割符来分隔文本,但允许你指定新的分隔符

使用默认的空格分隔符:
       public static void main(String[] args) throws FileNotFoundException {
        Scanner s = new Scanner("123 asdf sd 45 789 sdf asdfl,sdf.sdfl,asdf  ....asdfkl  las");
//      s.useDelimiter(" |,|\\.");//将注释行去掉,使用空格或逗号或点号作为分隔符
        while (s.hasNext()) {
            System.out.println(s.next());
        }
    }

四、API函数:

delimiter()
          返回此 Scanner 当前正在用于匹配分隔符的 Pattern。
hasNext()
          判断扫描器中当前扫描位置后是否还存在下一段。(原APIDoc的注释很扯淡)
hasNextLine()
          如果在此扫描器的输入中存在另一行,则返回 true。
next()
          查找并返回来自此扫描器的下一个完整标记。
nextLine()
          此扫描器执行当前行,并返回跳过的输入信息。
* */


/*
* system.in是系统标准输入流,相当于从外界(如键盘)输入信息,是IO流
* */


/*
* SimpleDateFormat 是一个以国别敏感的方式格式化和分析数据的具体类。
* 它允许格式化 (date -> text)、语法分析 (text -> date)和标准化。
* */


/*
 * DateFormat:日期格式化类(必须掌握)
 * API:
 * G  Era 标志符  Text  AD
y  年  Year  1996; 96
M  年中的月份  Month  July; Jul; 07
w  年中的周数  Number  27
W  月份中的周数  Number  2
D  年中的天数  Number  189
d  月份中的天数  Number  10
F  月份中的星期  Number  2
E  星期中的天数  Text  Tuesday; Tue
a  Am/pm 标记  Text  PM
H  一天中的小时数(0-23)  Number  0
k  一天中的小时数(1-24)  Number  24
K  am/pm 中的小时数(0-11)  Number  0
h  am/pm 中的小时数(1-12)  Number  12
m  小时中的分钟数  Number  30
s  分钟中的秒数  Number  55
S  毫秒数  Number  978
z  时区  General time zone  Pacific Standard Time; PST; GMT-08:00
Z  时区  RFC 822 time zone  -0800

 */

 

posted @ 2017-09-12 20:35  娜娜娜娜小姐姐  阅读(309)  评论(0)    收藏  举报