`
bibiye
  • 浏览: 172380 次
社区版块
存档分类
最新评论

格式化任意的时间格式

阅读更多

 


import java.util.Calendar;
import java.util.*;
import java.sql.Timestamp;

public class TimeFormat
{
  
private static String[] keywords =
      
{
      
"year""month""day""hour""minute""second""millisecond"}
;
  
private String format;
  
private Calendar whatTime;

  
public TimeFormat()
  
{
  }


  
/** *//**
   *
   * 
@param format year-month-day hour:minute:second   2005-11-25 22:02
   * 
@param timeStr
   * 
@return
   *
   * year年month月day日 hour点minute分second秒
   * 2005年11月25日 22点22分15秒
   * 2005/11/25  22:22
   * 05/11/25 22:22
   
*/

  
public static Calendar getTime(String format, String timeVarStr)
  
{
    String timeFormatStr 
= format;
    Calendar whatTime 
= null;
    
int year = 0, month = 0, day = 0, hour = 0, minute = 0,
        second 
= 0, millisecond = 0;

    String[] validTimeElements 
=
        
{
        
"year""month""day""hour""minute""second""millisecond"}
;

    
int dateVarCount = 0;
    
int index = -1;

    Vector tmpV 
= new Vector();

    Map map 
= new HashMap();

    
for (int i = 0; i < validTimeElements.length; i++)
    
{
       
int pos = format.indexOf(validTimeElements[i]);
       
if(pos>=0)
       
{
         map.put(
new Integer(pos),validTimeElements[i]);
       }

    }


    Object[] tmp 
= map.keySet().toArray();
    Integer[] tmpInt 
= new Integer[tmp.length];

    
for(int i = 0; i<tmpInt.length;i++)
    
{
      tmpInt[i] 
= (Integer) tmp[i];
    }


    
//从小到大排序, 还原原来的顺序.
    Arrays.sort(tmpInt);
    String[] varNames  
= new String[tmpInt.length];

    
for(int i=0;i<varNames.length;i++)
    
{
      varNames[i] 
= (String) map.get(tmpInt[i]);
    }


    String[] varValue 
= getTimeInOriginOrder(timeVarStr); //变量值

    
if(varValue==null)
    
{
      System.out.println(
"获取时间变量的值出错了.");
      
return null;
    }


    
int[] timeElementValue = new int[validTimeElements.length];

    
for(int i=0;i<varNames.length;i++)
    
{
      
for(int j=0;j<validTimeElements.length;j++)
      
{
        
if(varNames[i].equals(validTimeElements[j]))
        
{
          timeElementValue[j] 
= Integer.parseInt(varValue[i]);
          
break;
        }

      }

    }


    
if(format.indexOf("month")>=0 || format.indexOf("day")>=0)
    
{
      
if(format.indexOf("year")<0)
      
{
        System.out.println(
"没有年, 使用当前的年为缺省值.");
        timeElementValue[
0= Calendar.getInstance().get(Calendar.YEAR);
      }


     
//目前禁止年份是非4位数字表示的
      String tmpStr = timeElementValue[0]+"";
     
if(tmpStr.length()<4)
     
{
        System.out.println(
"目前禁止年份是非4位数字表示的,因为我们无法确定到底是哪一年");
        
return null;
     }



      whatTime 
=  Calendar.getInstance();
      whatTime.set(timeElementValue[
0], timeElementValue[1- 1,
                   timeElementValue[
2], timeElementValue[3], timeElementValue[4],
                   timeElementValue[
5]);
    }

    
else
    
{
      System.out.println(
"时间变量获取失败,至少必须又2个时间变量. year,month,day 必须都有, 可以允许year没有使用当前年份");
      whatTime 
= null;
    }

    
return whatTime;
  }



  
/** *//**
   * 把时间变量的值按顺序取出,以逗号隔开
   * 
@param val
   * 
@return
   
*/

  
static private String[] getTimeInOriginOrder(String val)
  
{
    String temp 
= "";
    String digital 
= "0123456789";
    
for (int i = 0; i < val.length(); i++)
    
{
      
if (digital.indexOf(val.substring(i, i + 1)) > -1)
      
{
        temp 
= temp + val.substring(i, i + 1);
      }

      
else
      
{
        
if (temp.length()>0 && temp.charAt(temp.length()-1)!=',' )
        
{
          temp 
= temp + ",";
        }

      }

    }


    System.out.println(temp);
    
return temp.split(","); //以逗号隔开的数组.
  }


  
public Calendar getTime(String timeStr)
  
{
    
return getTime(format, timeStr);
  }


  
/** *//**year, month, day, hour, minute,second, millisecond
      年    月     日    时   分     秒      毫秒
     这里暂时假设年份都是显示4位数字,月分和天数都是显示不带前置0的形式,
     如1998年9月3日,就不显示为98年09月03日,等日后完善。
     如果有显示年必须指定年要显示多少位。
     假设当前时间是:2002-11-15 20:13:55.359
     用户设置: year年month月day日hour时minute分second秒
     输出:2002年11月15日 20时13分55秒
     用户设置: year年month月day日
     输出:2002年11月15日
   注意必须用小写的形式,大写的不行,因为用户可能在时间字符串内
   也有大小写有区别的其他单词.
   *
*/


  
/** *//**
     如果正确 就返回其出现的位置,如果错误就返回-1.
   
*/


  
public static int isTimestampValid(String timeStr, String element)
分享到:
评论

相关推荐

    Struts2 格式化日期、时间和数字

    在Struts2框架中,处理日期、时间和数字的格式化是一项常见的任务,这涉及到前端展示和后端数据处理的一致性。Struts2提供了一系列工具和API,使得开发者能够轻松地进行格式化工作。以下是对Struts2中日期、时间和...

    SQL\日期、數字格式化函数大全

    如,`TO_CHAR(number, '999G999D99')` 可以格式化数字,9代表任意数字,G代表千位分隔符,D代表小数点。 4. `LPAD()` 和 `RPAD()`:在某些SQL方言中(如MySQL),这两个函数可以用来在数字前面或后面填充字符,以...

    C#超级字符串格式化源码示例

    在C#编程语言中,字符串格式化是一种常见且重要的任务,尤其在输出信息、日志记录、用户界面显示等方面。本文将深入探讨“C#超级字符串格式化源码示例”,并提供一种自定义实现的方法,帮助初学者理解并掌握字符串...

    易语言正则格式化时间源码

    在易语言中,结合正则表达式可以实现复杂的时间格式化功能,例如从用户输入的不规范时间字符串转换为标准格式。 本文将详细介绍如何在易语言中使用正则表达式进行时间格式化的源码解析。首先,我们需要了解易语言中...

    jsp格式化数字

    `pattern`属性接受一个日期格式字符串,如`"yyyy-MM-dd"`、`"yyyy-MM-dd HH:mm:ss"`等。 示例代码: ```jsp ${date}" pattern="yyyy-MM-dd"/&gt; ``` 这将会把`${date}`对象转换为形如`"2022-01-01"`的字符串。 通过...

    Java日期时间格式化操作DateUtils 的整理

    * getStrByDate(Date date, String format): 将日期时间格式化成字符串,format可以是任意的日期时间格式 日期时间计算 * getDayOfMonth(): 获取当前月份的第一天 * getFirstDayOfMonth(Date date): 获取指定日期...

    硬盘低级格式化操作图解.doc

    硬盘低级格式化,简称“低格”,是一种对硬盘存储空间进行基础结构初始化的过程,它直接与硬盘的物理特性相关,涉及到硬盘的扇区、磁道等底层构造。这一操作通常用于解决硬盘出现严重错误或者需要彻底清除硬盘数据的...

    labview格式化字符串与正则表达式

    例如,你可以控制数值的精度、添加千位分隔符、设定日期格式等。 2. **模板和占位符**:格式化字符串通常包含固定的文本和占位符。占位符用百分号(%)开头,后面跟着一个特定的标识符,用于插入特定类型的数据。...

    数字格式化类与大数处理利用案例轻松学习Java语言PPT学习教案.pptx

    这个类允许程序员根据特定的区域设置来格式化数字,类似于日期和时间的`DateFormat`类。但是,`NumberFormat`类的`getInstance()`方法返回的是本地化的格式化对象,对于需要更灵活的格式化方式,我们可以使用其子类`...

    图片任意格式转换器

    在IT领域,图片格式转换是一项常见的任务,..."最牛的单机游戏下载网站.url"则可能是一个快捷方式,指向一个提供丰富单机游戏资源的网站,与图片格式转换的主题虽不直接相关,但也可能是为了满足用户多元化的娱乐需求。

    JAVA输入任意日期可获取当月万年历

    此外,为了让输出更易读,可以考虑添加一些格式化技巧,如对周末的日期进行特殊标记,或者突出显示当前日期。 在提供的压缩包文件"PerpetualCalendar"中,可能包含了实现这个功能的具体Java源代码。通过阅读和分析...

    使用R-Studio数据恢复找回任意误删或格式化掉的文件

    R-Studio是一款强大的数据恢复工具,专用于恢复误删或格式化的文件。它适用于各种情况下的数据丢失,包括硬盘驱动器、外部存储设备如U盘,以及不同文件系统的恢复。这款软件提供了高级的数据恢复功能,使得即使对...

    易语言取任意时间星期

    2. **格式化日期时间**:使用`日期字符串()`和`时间字符串()`函数可以将日期时间转换为字符串,方便展示给用户。例如,`日期字符串(日期(), "yyyy年mm月dd日")`会将当前日期转化为"年-月-日"的格式。 3. **计算日期...

    批量修改任意格式文件名matlab代码

    可以使用字符串操作函数,如`strrep`替换部分字符串,或者`sprintf`格式化字符串。然后,用`movefile`或`rename`函数执行重命名操作。 4. **错误处理**: 在重命名过程中,可能遇到重名冲突或其他问题,所以需要...

    扩展JS Date对象时间格式化功能的小例子

    总结来说,扩展JavaScript Date对象的时间格式化功能是前端开发中常见的需求,通过添加自定义的format方法,可以灵活地输出任意格式的日期时间字符串。开发者可以根据实际需要,通过简单的代码调整,实现格式化的...

    易语言取任意时间星期源码.zip

    4. **用户输入与验证**:为了实现“取任意时间”,程序可能包含用户界面部分,让用户输入日期,然后验证输入的合法性,如确保输入的日期格式正确。 5. **错误处理**:良好的程序应该包含错误处理机制,当用户输入不...

    资料C任意类型数据转JSON格式.pdf

    例如,日期时间类型会加上引号,字符串类型也需如此。 5. 将属性名和格式化的属性值添加到JSON字符串中,中间用逗号分隔。 6. 在所有对象的属性都添加完成后,以右括号结束当前对象,如果这不是列表的最后一个对象,...

    C#资源\字符串格式常用资源

    字符串格式化是C#中处理字符串的一种高效方式,可以让你精确控制输出的格式,包括数字、日期、时间等数据的显示样式。本文将深入探讨C#中的字符串格式化,包括基本的字符串格式化方法、字符串模板、以及.NET框架提供...

    C#中任意类型数据转成JSON格式

    例如,日期、Guid和时间跨度等特殊类型需要特别处理,以避免出现无法解析的JSON字符串。 接下来,`ListToJson&lt;T&gt;`的第二个重载版本简化了调用,它不再需要显式提供jsonName,而是自动获取列表中第一个元素的类型...

    易语言源码易语言取任意时间星期源码.rar

    这个过程可能涉及到对日期的解析,转换成易语言内部可识别的日期格式,然后调用内置的日期/时间函数,最后将得到的星期整数转换为汉字表示的星期(如“星期一”到“星期日”)。 解压并查看源码后,我们能学习到...

Global site tag (gtag.js) - Google Analytics