??xml version="1.0" encoding="utf-8" standalone="yes"?>尤物网站在线,久久aⅴ乱码一区二区三区,综合久久婷婷http://www.aygfsteel.com/cnyanhai/category/3902.htmlzh-cnWed, 28 Feb 2007 08:20:41 GMTWed, 28 Feb 2007 08:20:41 GMT60Java中一些关于日期、日期格式、日期的解析和日期的计算http://www.aygfsteel.com/cnyanhai/archive/2005/10/28/17142.html十三?/dc:creator>十三?/author>Fri, 28 Oct 2005 03:00:00 GMThttp://www.aygfsteel.com/cnyanhai/archive/2005/10/28/17142.htmlhttp://www.aygfsteel.com/cnyanhai/comments/17142.htmlhttp://www.aygfsteel.com/cnyanhai/archive/2005/10/28/17142.html#Feedback0http://www.aygfsteel.com/cnyanhai/comments/commentRss/17142.htmlhttp://www.aygfsteel.com/cnyanhai/services/trackbacks/17142.html     Java 语言的Calendar(日历),Date(日期), 和DateFormat(日期格式)l成了Java标准的一个基本但是非帔R要的部分. 日期是商业逻辑计算一个关键的部分. 所有的开发者都应该能够计算未来的日? 定制日期的显C格? q将文本数据解析成日期对?

    Date cd际上只是一个包裹类, 它包含的是一个长整型数据, 表示的是从GMT(格林治标准旉)1970q? 1 ?1?0:00:00q一M前或者是之后l历的毫U数.

一、创Z个日期对?BR>    使用pȝ的当前日期和旉创徏一个日期对象ƈq回一个长整数的简单例? q个旉通常被称为Java 虚拟?JVM)L环境的系l时?

Date date = new Date();
System.out.println(date.getTime());

    上面的例子在pȝ输出讑֤上显C的l果?1001803809710. 在这个例子中,值得注意的是我们使用了Date 构造函数创Z个日期对? q个构造函数没有接受Q何参? 而这个构造函数在内部使用了System.currentTimeMillis() Ҏ来从pȝ获取日期.
二、日期数据的定制格式
    定制日期数据的格? 比方星期?9?29?2001q? 下面的例子展CZ如何完成q个工作:

SimpleDateFormat bartDateFormat = new SimpleDateFormat("EEEE-MMMM-dd-yyyy");
Date date = new Date();
System.out.println(bartDateFormat.format(date));

    只要通过向SimpleDateFormat 的构造函C递格式字W串"EEE-MMMM-dd-yyyy", 我们p够指明自己想要的格式. 你应该可以看? 格式字符串中的ASCII 字符告诉格式化函C面显C日期数据的哪一个部? EEEE是星? MMMM是月, dd是日, yyyy是年. 字符的个数决定了日期是如何格式化?传?EE-MM-dd-yy"会显C?Sat-09-29-01.
    下面是一些格式:
Date and Time Pattern Result
"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


三、将文本数据解析成日期对?BR>    假设我们有一个文本字W串包含了一个格式化了的日期对象, 而我们希望解析这个字W串q从文本日期数据创徏一个日期对? 我们再ơ以格式化字W串"MM-dd-yyyy" 调用SimpleDateFormatc? 但是q一? 我们使用格式化解析而不是生成一个文本日期数? 我们的例? 昄在下? 解析文本字W串"9-29-2001"q创Z个gؓ001736000000 的日期对?

SimpleDateFormat bartDateFormat = new SimpleDateFormat("MM-dd-yyyy");
String dateStringToParse = "9-29-2001";
try {
Date date = bartDateFormat.parse(dateStringToParse);
System.out.println(date.getTime());
} catch (Exception ex) {
System.out.println(ex.getMessage());
}

四、用标准的日期格式化过E?

既然我们已经可以生成和解析定制的日期格式? 让我们来看一看如何用内建的格式化过E? Ҏ DateFormat.getDateTimeInstance() 让我们得以用几种不同的方法获得标准的日期格式化过E? 在下面的例子? 我们获取了四个内建的日期格式化过E? 它们包括一个短? 中等? 长的, 和完整的日期格式.

Date date = new Date();

DateFormat shortDateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);
DateFormat mediumDateFormat =DateFormat.getDateTimeInstance( DateFormat.MEDIUM, teFormat.MEDIUM);
DateFormat longDateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG); DateFormat fullDateFormat = DateFormat.getDateTimeInstance( DateFormat.FULL, DateFormat.FULL);

System.out.println(shortDateFormat.format(date));
System.out.println(mediumDateFormat.format(date));
System.out.println(longDateFormat.format(date));
System.out.println(fullDateFormat.format(date));

注意我们在对 getDateTimeInstance的每ơ调用中都传递了两个? W一个参数是日期风格, 而第二个参数是时间风? 它们都是基本数据cdint(整型). 考虑到可L? 我们使用了DateFormat cL供的帔R: SHORT, MEDIUM, LONG, ?FULL.
q行例子E序的时? 它将向标准输备输Z面的内容:
9/29/01 8:44 PM
Sep 29, 2001 8:44:45 PM
September 29, 2001 8:44:45 PM EDT
Saturday, September 29, 2001 8:44:45 PM EDT

五、Calendar c?

假设你想要设|? 获取, 和操U一个日期对象的各个部分, 比方一个月的一天或者是一个星期的一? Z演示q个q程, 我们用具体的子类 java.util.GregorianCalendar. 考虑下面的例? 它计得C面的W十个星期五?3?


DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.FULL);

GregorianCalendar cal = new GregorianCalendar();

cal.setTime(new Date());
System.out.println("System Date: " + dateFormat.format(cal.getTime()));

// Set the day of week to FRIDAY
cal.set(GregorianCalendar.DAY_OF_WEEK, GregorianCalendar.FRIDAY);
System.out.println("After Setting Day of Week to Friday: " +
dateFormat.format(cal.getTime()));

int friday13Counter = 0;

while (friday13Counter <= 10)
{

// Go to the next Friday by adding 7 days.
cal.add(GregorianCalendar.DAY_OF_MONTH, 7);

// If the day of month is 13 we have
// another Friday the 13th.
if (cal.get(GregorianCalendar.DAY_OF_MONTH) == 13)
{
friday13Counter++;
System.out.println(dateFormat.format(cal.getTime()));
}
}

在这个例子中作了有趣的函数调?
cal.set(GregorianCalendar.DAY_OF_WEEK, GregorianCalendar.FRIDAY);
?
cal.add(GregorianCalendar.DAY_OF_MONTH, 7);

set Ҏ能够让我们通过单的讄星期中的哪一天这个域来将我们的时间调整ؓ星期? 注意到这里我们用了帔R DAY_OF_WEEK ?FRIDAY来增Z码的可读? add Ҏ让我们能够在日期上加上数? 润年的所有复杂的计算都由q个Ҏ自动处理.

我们q个例子的输出结果是:
System Date: Saturday, September 29, 2001
当我们将它设|成星期五以后就成了: Friday, September 28, 2001
Friday, September 13, 2002
Friday, December 13, 2002
Friday, June 13, 2003
Friday, February 13, 2004
Friday, August 13, 2004
Friday, May 13, 2005
Friday, January 13, 2006
Friday, October 13, 2006
Friday, April 13, 2007
Friday, July 13, 2007
Friday, June 13, 2008

GregorianCalendarcL供处理日期的Ҏ。一个有用的Ҏ?FONT color=#ff0000>add().
使用add()ҎQ你能够增加象年Q月敎ͼ天数到日期对象中。要使用add()ҎQ你必须提供要增加的字段Q要增加的数量。一些有用的字段是DATE, MONTH, YEAR, ?WEEK_OF_YEAR。下面的E序使用add()Ҏ计算未来80天的一个日期。在Jules?lt;环球80?gt;是一个重要的数字Q用这个程序可以计Phileas Fogg从出发的那一?872q?0?日后80天的日期Q?BR>
GregorianCalendar worldTour = new GregorianCalendar(1872, Calendar.OCTOBER, 2);
worldTour.add(GregorianCalendar.DATE, 80);
Date d = worldTour.getTime();
DateFormat df = DateFormat.getDateInstance();
String s = df.format(d);
System.out.println("80 day trip will end " + s);

五、实现日期以天数的加减:
/* 当前日期加减n天数?
* 如传入字W型"-5" 意ؓ当前日期减?天的日期
* 如传入字W型"5" 意ؓ当前日期加?天后的日?BR>* q回字串 ?1999-02-03)
*/

public String dateAdd(String to)
{
//日期处理模块 (日期加上某些天或减d?q回字符?BR>int strTo;
try {
   strTo = Integer.parseInt(to);}
catch (Exception e) {
   System.out.println("日期标识转换出错! : \n:::" + to + "不能转ؓ数字?);
   e.printStackTrace();
   strTo = 0;
}
Calendar strDate = Calendar.getInstance(); //java.util?讄当前旉
strDate.add(strDate.DATE, strTo); //日期?如果不够减会月变动 //生成 (q???
String meStrDate = strDate.get(strDate.YEAR) + "-" +String.valueOf(strDate.get(strDate.MONTH)+1) + "-" + strDate.get(strDate.DATE);
return meStrDate;
}



]]>
在JSP中执行dos命o http://www.aygfsteel.com/cnyanhai/archive/2005/10/18/15782.html十三?/dc:creator>十三?/author>Tue, 18 Oct 2005 02:27:00 GMThttp://www.aygfsteel.com/cnyanhai/archive/2005/10/18/15782.htmlhttp://www.aygfsteel.com/cnyanhai/comments/15782.htmlhttp://www.aygfsteel.com/cnyanhai/archive/2005/10/18/15782.html#Feedback0http://www.aygfsteel.com/cnyanhai/comments/commentRss/15782.htmlhttp://www.aygfsteel.com/cnyanhai/services/trackbacks/15782.html     在JSP中我们经常要调用服务器端的一些dos命oQ已辑ֈ一些特D的效果Q但同时调用服务器端的dos命o也存在着一些安全隐患,因此需要慎重用?/FONT>

     以下以一个例子来说明用jsp执行dos的过E,比如在服务器端每天都会自动生成一个目录(目录名称为当天的日期Q,再此目录下会生成一些当天的新闻文gQ管理员会把q些文g几个月作一ơ备份,备䆾完后在把q些文g删除?/FONT>

     如果在服务器上,我们可以在dos下直接执行c:\j2sdk\jar cf d:\bak\200502.jar d:\news\20050101 命oQ?然后再把20050101目录删除卛_?/FONT>

     在JSP中我们应当这么来?/FONT>

<%
//执行dos命o
String commandstr = "c:/j2sdk/jar cf d:/bak/200502.jar d:/news/20050101";
Process p ;
try {
   p = Runtime.getRuntime().exec(commandstr);
//{待刚刚执行的命令的l束  
while (true){  
           if(p.waitFor() == 0)   break;
   }    
   
} catch (Exception e) {
    out.println(e.toString());
   }

//删除已经打包的文件及其目?BR>File f = new File("d:/news/20020101");
String[] allFiles = f.list();
for (int i = 0; i < allFiles.length; i++) {
   File delF = new File("d:/news/20050101/"+allFiles[i]);
   delF.delete();
}
File delD = new File("d:/news/20050101");
delD.delete();
%>

     在jsp中以下代码必L行,如果没有该代码,则由于删除文件的速度快于打包的速度Q因此当压羃包还没有打包完成Q一些文件已l被删除Q加入下面的代码Q会在此一直做循环Q一直p.waitFor()Q这个方法的说明是:{待子进E的l束Q如果已l结束,一般返?Q返?为止才会接着执行后面的代?BR>while (true){  
           if(p.waitFor() == 0)   break;
   } 



]]>
վ֩ģ壺 ½| ͨ| ˮ| | | | ϵ| | Ž| ˿| | | ̩| | ѽ| | Ӳ| ƽ| ˻| | | | | | °Ͷ| | | Դ| | | ɳ| | ذ| «Ϫ| հ| ɳ| ɽ| | | | ĵ|