字符串时间转化成时间类型

本文总结了JSP中常见的时间操作方法,包括如何获取当前时间、将字符串转换为时间类型、计算两个时间之间的天数等。同时介绍了如何通过Java代码实现时间的加减运算。
 

经常看见jsp版里有人问时间操作的问题,这些问题一般包括:取当前时间,把一个指定的字符串时间转化成时间类型,求两个时间之间的天数,求一段时间以前的时间,求一段时间以后的时间,在这里就把这些问题汇总一下。


<%@  page  contentType="text/html;charset=gb2312"%>
<%@ page import="java.text.*"%>
<%@ page import="java.util.*"%>
<%
//字符串转化成时间类型(字符串可以是任意类型,只要和SimpleDateFormat中的格式一致即可)
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("M/dd/yyyy hh:mm:ss a",java.util.Locale.US);
java.util.Date d = sdf.parse("5/13/2003 10:31:37 AM");  
out.println(d);
out.println("<br>");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String mDateTime1=formatter.format(d);
out.println(mDateTime1);
out.println("<br>");
out.println(d.getTime());
out.println("<br>");


//当前时间
Calendar cal  = Calendar.getInstance();
//  SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd  HH:mm:ss");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd  HH:mm:ss G E D F w W a E F");
String mDateTime=formatter.format(cal.getTime());
out.println(mDateTime);
out.println("<br>");


//1年前日期
java.util.Date myDate=new java.util.Date();  
long myTime=(myDate.getTime()/1000)-60*60*24*365;
myDate.setTime(myTime*1000);
String mDate=formatter.format(myDate);
out.println(mDate);
out.println("<br>");


//明天日期
myDate=new java.util.Date();
myTime=(myDate.getTime()/1000)+60*60*24;
myDate.setTime(myTime*1000);
mDate=formatter.format(myDate);
out.println(mDate);
out.println("<br>");


//两个时间之间的天数
SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
java.util.Date date= myFormatter.parse("2003-05-1");
java.util.Date mydate= myFormatter.parse("1899-12-30");
long  day=(date.getTime()-mydate.getTime())/(24*60*60*1000);
out.println(day);
out.println("<br>");


//加半小时
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
java.util.Date date1 = format.parse("2002-02-28 23:16:00");
long Time=(date1.getTime()/1000)+60*30;
date1.setTime(Time*1000);
String mydate1=formatter.format(date1);
out.println(mydate1);
out.println("<br>");


//年月周求日期
SimpleDateFormat formatter2 = new SimpleDateFormat("yyyy-MM F E");
java.util.Date date2= formatter2.parse("2003-05 5 星期五");
SimpleDateFormat formatter3 = new SimpleDateFormat("yyyy-MM-dd");
String mydate2=formatter3.format(date2);
out.println(mydate2);
out.println("<br>");


//求是星期几
mydate= myFormatter.parse("2001-1-1");
SimpleDateFormat formatter4 = new SimpleDateFormat("E");
String mydate3=formatter4.format(mydate);
out.println(mydate3);
out.println("<br>");
%>
### 在MATLAB中将字符串类型转换为日期类型 在MATLAB中,可以使用 `datetime` 函数将字符串类型的日期数据转换为日期类型。以下是详细说明和示例代码: #### 使用 `datetime` 函数 `datetime` 函数能够解析字符串并将其转换为日期时间格式。需要指定输入字符串日期格式以确保正确解析[^1]。 ```matlab % 示例字符串 dateStr = "2023-10-05"; % 将字符串转换为日期类型 dateValue = datetime(dateStr, 'InputFormat', 'yyyy-MM-dd'); % 显示结果 disp(dateValue); ``` #### 处理不同格式的字符串 如果字符串日期格式与默认格式不同,则需要通过 `'InputFormat'` 参数明确指定格式。以下是一些常见格式的例子[^2]: ```matlab % 示例 1:日期格式为 yyyy/MM/dd dateStr1 = "2023/10/05"; dateValue1 = datetime(dateStr1, 'InputFormat', 'yyyy/MM/dd'); disp(dateValue1); % 示例 2:日期格式为 dd-MMM-yyyy dateStr2 = "05-Oct-2023"; dateValue2 = datetime(dateStr2, 'InputFormat', 'dd-MMM-yyyy'); disp(dateValue2); % 示例 3:包含时间日期字符串 dateStr3 = "2023-10-05 14:30:00"; dateValue3 = datetime(dateStr3, 'InputFormat', 'yyyy-MM-dd HH:mm:ss'); disp(dateValue3); ``` #### 自动检测日期格式 如果字符串日期格式是常见的标准格式之一,可以省略 `'InputFormat'` 参数,让 `datetime` 函数自动检测格式[^3]: ```matlab % 示例:自动检测日期格式 dateStrAuto = "2023-10-05T14:30:00Z"; dateValueAuto = datetime(dateStrAuto); disp(dateValueAuto); ``` #### 转换后的操作 转换后的 `datetime` 对象支持多种操作,例如日期计算、格式化输出等。以下是一个简单的日期计算示例[^4]: ```matlab % 创建两个日期 date1 = datetime('2023-10-01', 'InputFormat', 'yyyy-MM-dd'); date2 = datetime('2023-10-05', 'InputFormat', 'yyyy-MM-dd'); % 计算两个日期之间的天数差 daysDiff = daysbetween(date1, date2); disp(daysDiff); ``` #### 常见错误处理 如果字符串格式不匹配指定的 `'InputFormat'`,MATLAB 会抛出错误。为了避免这种情况,可以使用 `try-catch` 结构进行异常处理[^5]: ```matlab dateStrInvalid = "2023/13/05"; % 错误的日期格式 try dateValueInvalid = datetime(dateStrInvalid, 'InputFormat', 'yyyy/MM/dd'); catch ME disp("日期格式错误或无效"); end ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值