时间与字串的转换,date/string

package com.neweb.botCashier.util;

import java.math.BigDecimal;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import org.apache.log4j.Logger;

import com.neweb.botCashier.base.exception.AppException;

public class DateUtils {

private static Logger logger = Logger.getLogger(DateUtils.class);

public static final String DATE_PATTERN_DEFAULT = "yyyyMMdd";
public static final String TIME_PATTERN_DEFAULT = "HHmmss";

/**
* 字串轉時間
* @param str 時間字串
* @param fmt 字串格式
* @return Date
*/
public static Date stringToDate(String str, String fmt){
if (null == str || "".equals (str))
return null;

java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(fmt);
try{
return sdf.parse(str);
}catch (java.text.ParseException pe){
logger.error(pe);
}
return null;
}

/**
* 字串轉日期,預設格式yyyyMMdd
* @param str 日期字串
* @return Date
*/
public static Date stringToDate(String str){
if (null == str || "".equals (str))
return null;
return stringToDate (str, DATE_PATTERN_DEFAULT);
}

/**
* 日期轉字串
* @param date 日期
* @param fmt 字串格式
* @return String
*/
public static String dateToString(Date date, String fmt){
if (null == date)
return "";

java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(fmt);
try{
return new String(sdf.format(date, new StringBuffer(), new java.text.FieldPosition(0)));
}catch (NullPointerException ne){
logger.error(ne);
}
return null;
}

/**
* 日期轉字串,預設格式yyyyMMdd
* @param date 日期
* @return String
*/
public static String dateToString(Date date){
if (null == date)
return "";
return dateToString(date, DATE_PATTERN_DEFAULT);
}

/**
* 日期轉數字
* @param date
* @return
*/
public static int dateToInt(Date date){
try{
return Integer.parseInt(DateUtils.dateToString(date));
}catch (Exception e){
logger.error(e.getMessage(), e);
return 0;
}
}

/**
* 數字日期時間轉日期時間
* @param date
* @param time
* @return
*/
public static Date intToDate(int date, int time){
String fullDateTime = intDateToStr(date) + intTimeToStr(time);
return stringToDate(fullDateTime, "yyyyMMddHHmmss");
}

/**
* 時間轉字串,預設格式HHmmss
* @param date 時間
* @return String
*/
public static String timeToString(Date date){
if (null == date)
return "";
return dateToString(date, TIME_PATTERN_DEFAULT);
}
/**
* 時間轉字串,預設格式HHmmss
* @param date 時間
* @return String
*/
public static String timeToString(Date date, String fmt){
if (null == date)
return "";
return dateToString(date, fmt);
}
/**
* 時間轉數字
* @param date
* @return
*/
public static int timeToInt(Date date){
try{
return Integer.parseInt(DateUtils.timeToString(date));
}catch (Exception e){
logger.error(e.getMessage(), e);
return 0;
}
}

/**
* 數字日期轉字串
* @param date
* @param fmt
* @return
*/
public static String intDateToStr(int date, String fmt){
return dateToString(stringToDate(String.format("%08d", date)), fmt);
}

/**
* 數字日期轉字串, 預設格式yyyyMMdd
* @param date
* @return
*/
public static String intDateToStr(int date){
return intDateToStr(date, DATE_PATTERN_DEFAULT);
}

/**
* 數字時間轉字串
* @param time
* @param fmt
* @return
*/
public static String intTimeToStr(int time, String fmt){
return dateToString(stringToDate(String.format("%06d", time), TIME_PATTERN_DEFAULT), fmt);
}

/**
* 數字時間轉字串, 預設格式HHmmss
* @param time
* @return
*/
public static String intTimeToStr(int time){
return intTimeToStr(time, TIME_PATTERN_DEFAULT);
}

/**
* 取得系統時間
* @return Date
*/
public static Date getSysDate() {
return Calendar.getInstance().getTime();
}

/**
* 取得昨日
* @return
*/
public static Date getYesterday(){
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, -1);
return cal.getTime();
}

/**
* 取得明日(隔日)
* @return
*/
public static Date getTomorrow(){
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, +1);
return cal.getTime();
}

/**
* 增加日期月份
* @param dt 時間
* @param amount 增加月份
* @return Date
*/
public static Date addMonth(Date dt, int amount){
Calendar cal = Calendar.getInstance();
cal.setTime(dt);
cal.add(Calendar.MONTH, amount);
return cal.getTime();
}

/**
* 增加日期天數
* @param dt 時間
* @param amount 增加天數
* @return Date
*/
public static Date addDate(Date dt, int amount){
Calendar cal = Calendar.getInstance();
cal.setTime(dt);
cal.add(Calendar.DAY_OF_MONTH, amount);
return cal.getTime();
}

/**
* 增加分鐘數
* @param dt 時間
* @param amount 增加分鐘數
* @return
*/
public static Date addMinute(Date dt, int amount){
Calendar cal = Calendar.getInstance();
cal.setTime(dt);
cal.add(Calendar.MINUTE, amount);
return cal.getTime();
}

/**
* 計算時間差距
* @param sDate 起始時間
* @param eDate 結束時間
* @return
*/
public static long totalSec(Date sDate, Date eDate){
long sTime = sDate.getTime();
long eTime = eDate.getTime();
long total = eTime - sTime;
return total;
}

/**
* 檢查信用卡有效月年
* [v1 > v2, 回傳大於0],
* [v1 = v2, 回傳0],
* [v1 < v2, 回傳小於0]
* @param v1
* @param v2
* @return
*/
public static int compareVaildYearMonth(String v1, String v2){
String v1YM = v1.substring(2) + v1.substring(0, 2);
String v2YM = v2.substring(2) + v2.substring(0, 2);
return v1YM.compareTo(v2YM);
}

/**
* 轉換信用卡過期日,MMyy轉成yyyyMM
* @param MMyy
* @return yyyMM
*/
public static String convertCardtValidYearMonth(String MMyy){
try {
//須為數字
Integer.parseInt(MMyy);
//更換年月
String sysYear = DateUtils.dateToString(getSysDate(), "yyyy");
String result = sysYear.substring(0, 2)
+ MMyy.substring(2)
+ MMyy.substring(0, 2);
return result;
}catch(Exception e){
logger.info(e.getMessage(), e);
return null;
}

}

/**
* 西元年字串轉民國年字串
* @param dateStr
* @return
*/
public static String dateStrToROC(String dateStr){
try{
Date date = DateUtils.stringToDate(dateStr);
int dateInt = DateUtils.dateToInt(date);
return String.valueOf(dateInt - 19110000);
}catch(Exception e){
logger.info(e.getMessage(), e);
return null;
}

}

/**
* 民國年字串轉西元年字串
* @param dateStr
* @return
*/
public static String ROCToDateStr(String rocStr){
try{
int dateInt = Integer.parseInt(rocStr) + 19110000;
return String.valueOf(dateInt);
}catch(Exception e){
logger.info(e.getMessage(), e);
return null;
}

}

/**
* 計算剩餘時間
* @param limitDate 截止時間
* @param currentDate 當下時間
* @return long[]回傳 [index:0] 分, [index:1] 秒
*/
public static long[] getVerifyRemainTime(Date limitDate, Date currentDate){
long[] result = new long[]{0l, 0l};
long totalMSec = limitDate.getTime() - currentDate.getTime();
long totalSec = (new BigDecimal(totalMSec).divide(new BigDecimal(1000), 0, BigDecimal.ROUND_HALF_UP)).longValue();
System.out.println(totalSec);
result[0] = totalSec / 60l;
result[1] = totalSec % 60l;
return result;
}

/**
* 獲得日曆日:該年的第×天
* @param currentDate
* @return
*/
public static int getCalandaDay(Date currentDate){
Calendar cal = Calendar.getInstance();
cal.setTime(currentDate);
return cal.get(Calendar.DAY_OF_YEAR);
}

/**
* 取得系統西元年字串日期 EX:20120101
*
* @param sign
* @return
*/
public static String getSystemDate() {
Date date = new Date();
DateFormat format = new SimpleDateFormat("yyyy" + "MM" + "dd"); // + "HH" + "mm" + "ss"
return format.format(date);
}
/**
* 取得系統西元年字串時間 EX:171020
*
* @param sign
* @return
*/
public static String getSystemTime() {
Calendar cal=Calendar.getInstance();
String hours= "0" + String.valueOf(cal.get(Calendar.HOUR_OF_DAY));
String minute= "0" + String.valueOf(cal.get(Calendar.MINUTE));
String second= "0" + String.valueOf(cal.get(Calendar.SECOND));
String systime = hours.substring(hours.length() - 2) + minute.substring(minute.length() - 2 ) + second.substring(second.length() - 2 );
return systime;
}
public static void main(String[] args) {
try{
Date sendDate = DateUtils.intToDate(20121101, 172440);
Date afert5MDate = DateUtils.addMinute(sendDate, 5);
System.out.println(afert5MDate);
Date sysDate = DateUtils.getSysDate();
System.out.println(sysDate);
if (sysDate.before(afert5MDate)){
long[] times = DateUtils.getVerifyRemainTime(afert5MDate, sysDate);
throw AppException.getValidateErr("IDX1023", new String[]{String.valueOf(times[0]), String.valueOf(times[1])});
}
}catch(Exception e){
System.out.println(e.getMessage());
}

}
}

时间: 2024-10-11 00:49:47

时间与字串的转换,date/string的相关文章

C#,Asp.NET 导入Excel,时间格式一串数字转换.

在Excel中.日期或者时间格式为:42093.6506944444 或者 0.650694444444444 大于0 表示有日期(2015-03-30),小于零则是时间(15:37) 在C# 导入读取这列时,转换会发生错误; 现在将这格式转换为正常的日期格式:如下 1 /// <summary> 2 /// 数字转换时间格式 3 /// </summary> 4 /// <param name="timeStr">数字,如:42095.706944

luogu题解P1032字串变换--BFS+STL:string骚操作

题目链接 https://www.luogu.org/problemnew/show/P1032 分析 这题本来很裸的一个BFS,发现其中的字符串操作好烦啊.然后就翻大佬题解发现用STL中的string居然变得这么简洁!!! 各种string操作请看另一位大佬博客,写得很全啊: https://www.cnblogs.com/rvalue/p/7327293.html#commentform 其实我们这题只用到两个相关函数:\(S.find(string,pos)\)和\(S.substr()\

DELPHI加密字串(异或运算加密)

首先有两个自定的转换函数: function myStrToHex(s:string):string; //字串转16进制 var TmpStr:string; i:integer; begin TmpStr:=''; for i:=1 to Length(s)do TmpStr:=TmpStr+IntToHex(ord(s[i]),2); Result:=TmpStr; end; function myHexToStr(S:string):string; //16进制转字串 var HexS,

Java日期与时间的处理/Date,String,Calendar转换

public class Demo01 { //Java中Date类和Calendar简介 public static void main(String[] args) { long now=System.currentTimeMillis(); System.out.println("now= "+now); Date d1=new Date(now); System.out.println("d1= "+d1); Calendar c1=Calendar.get

怎么使float保留两位小数或多位小数*如何将整数 int 转换成字串 String

5.怎么使float保留两位小数或多位小数* 两种方法: import java.math.*; -- 方法1: float f = 34.232323; BigDecimal b = new BigDecimal(f); float f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue(); // b.setScale(2, BigDecimal.ROUND_HALF_UP) 表明四舍五入,保留两位小数 方法2: float scale

java字串加密及String的各类函数说明

一.字串加密 古罗马皇帝凯撒在打仗时曾经使用过以下方法加密军事情报: 请编写一个程序,使用上述算法加密或解密用户输入的英文字串要求设计思想.程序流程图.源代码.结果截图. 1.程序设计思想 先定义字符串,之后输入字符串,算出字符串的长度,用for循环进行字符串的加密,运用ASCLL码表,进行加密,如果是xyz就减23,XYZ同理,其余的就正常加3,最后将加密的字符加到一个空的String类型的成员上,最后输出结果. 2.程序流程图 3.源代码 import java.util.Scanner;

Date String 类型的互相转换 和 valueOf 、parseInt() 方法的比较

package method.usually; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import org.json.JSONObject; public class typeMethod { public static void main(String[] args) { //比较两个方法 // c

C语言:自定义一个查找字串的功能函数,类似于&lt;string.h&gt;中的strstr()

//自定义一个字符串字串查找标准库函数strstr() #include<stdio.h> #include<string.h> char* myStrstr(char *str1,char *str2); int main() { char *str1 = "hello worl world ld"; char *str2 = " world "; puts(myStrstr(str1,str2)); return 0; } char *m

公共字串计算——String.regionMatches方法 &amp; Java标签

题目:输入两个字符串,计算两个字符串的最大公共字串的长度,并输出,字符不区分大小写 eg:输入abcde  xxxBcyyy,输出 2. 完整Java代码: import java.util.*; public class Main { public static void main(String arg[]){ Scanner s=new Scanner(System.in); String str1=s.next(); String str2=s.next(); s.close(); Str