• Java 中的 SimpleDateFormat 【 parse 和 format 】【转换时间格式】


        在 Java 里面有很多特别方便的函数(尽管术语可能不这么说)可以供我们使用,让一些本来要写好长好多的代码的事情变得仅仅几行就解决了。

    在 SimpleDateFormat 中,有以下特定的规则:
             

    G 年代标志符     y 年     M 月     d 日     h 时(在上午或者下午 12小时制)     H 时(在一天中 24小时制)

    m 分     s 秒     S 毫秒     E 星期     D 一年中的第几天     z 时区     F 一月中第几个星期几     w 一年中第几个星期

    W 一月中第几个星期     a 上午 / 下午标记符     k 时(在一天中的、24小时制)     K 时(在上午或者下午、12小时制)     

    下面这题为例(SDUT 2246):

    对于日期的常用格式,在中国常采用格式的是“年年年年/月月/日日”或写为英语缩略表示的”yyyy/mm/dd”,此次编程竞赛的启动日期“2010/11/20”就是符合这种格式的一个日期,

    而北美所用的日期格式则为“月月/日日/年年年年”或”mm/dd /yyyy”,如将“2010/11/20”改成这种格式,对应的则是”11/20/2010”。对于时间的格式,则常有12小时制和24小时制

    的表示方法,24小时制用0-24来表示一天中的24小时,而12小时制只采用1-12表示小时,再加上am/pm来表示上午或下午,比如”17:30:00”是采用24小时制来表示时间,而对应的

    12小时制的表示方法是”05:30:00pm”。注意12:00:00pm表示中午12点,而12:00:00am 表示凌晨12点。

    对于给定的采用”yyyy/mm/dd”加24小时制(用短横线”-”连接)来表示日期和时间的字符串,请编程实现将其转换成”mm/dd/yyyy”加12小时制格式的字符串。

    import java.util.*;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    
    public class Main {
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		int n;
    		n = sc.nextInt();
    		sc.nextLine();
    		SimpleDateFormat df1 = new SimpleDateFormat("yyyy/MM/dd-HH:mm:ss",Locale.CHINA);
    		SimpleDateFormat df2 = new SimpleDateFormat("MM/dd/yyyy-hh:mm:ssa",Locale.US);
    		String s;
    		while(n -- > 0) {
    			s = sc.nextLine();
    			try {
    				System.out.println(df2.format(df1.parse(s)).toLowerCase());
    			}catch(ParseException e) {
    				e.printStackTrace();
    			}
    		}
    		
    	}
    }
    
    

    其中需要知道的是,SimpleDateFormat 在 Java 里面要导入包 java.text.SimpleDateFormat 这样才可以用。                         语句中: SimpleDateFormat df1 = new SimpleDateFormat("yyyy/MM/dd-HH:mm:ss",Locale.CHINA);  以CHINA时间为准,定义格式为24小时制的时间格式,可以是这样的形式:2018/11/27-17:12:12 ,同样的道理第二个格式定义语句有同样的功能,format 的作用就是转换成这个格式,而 parse (从语法上描述或分析(词句等))可以把字符串转换成相应的格式储存,类型是 Date,这就像是一个字符型 '0' 和整数型 0 是差不多的道理。

    其中在时间格式中的那个  Locale.US , 不要忘记了那个点,变成 US 是可以让上下午变成 am 或者 pm 。

  • 相关阅读:
    2017年上海金马五校程序设计竞赛:Problem C : Count the Number (模拟)
    2017年上海金马五校程序设计竞赛:Problem B : Sailing (广搜)
    2017年上海金马五校程序设计竞赛:Problem A : STEED Cards (STL全排列函数)
    之江学院第0届校赛 qwb去面试 (找规律)
    [leetcode-41-First Missing Positive]
    [leetcode-625-Minimum Factorization]
    [leetcode-623-Add One Row to Tree]
    [leetcode-624-Maximum Distance in Arrays]
    [leetcode-95-Unique Binary Search Trees II]
    [leetcode-96-Unique Binary Search Trees]
  • 原文地址:https://www.cnblogs.com/lcchy/p/10139435.html
Copyright © 2020-2023  润新知