今天给各位分享java8字符串转日期的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
1、java把8位数的日期字符串存进一个长为3的字节数组里面,再转出来也能是存进去时的字符串2、java8位字符串转日期格式后不正确3、java 编程从屏幕输入8-10位字符串,判断是否为日期4、如何在java8中愉快地处理日期和时间java8新增了localdate和localtim5、java字符串转换成日期
java把8位数的日期字符串存进一个长为3的字节数组里面,再转出来也能是存进去时的字符串
大小3的byte数组时24位
日最大是31日,2的5次方最大32,所以 5 位可以表示全部日期
月最大是12月,2的4次方最大16,可以用 4 位表示月份
年份姑且认为最大是9999年,2的14次方可以满足,用14位来表示年份
所以byte数组中,14+4+5 可以表示全部年月日
public static void main(String[] args) throws DocumentException {
int year = 2018; // 011111100010
int month = 4; // 0100
int day =23; // 00010111
byte[] date = new byte[3];
year = year9; //日和月需要9位
month = month5;
//存日期
int temp = year | month | day; // 000011111100010 0100 10111
date[2] = (byte) (temp 0xff); //temp的低8位与1111 1111 与运算,即 10010111 11111111
date[1] = (byte) (temp80xff);//temp的中8位
date[0] = (byte) (temp160xff);//temp的高8位
//取日期
int dayN = date[2];
dayN = dayN0x1F; //00011111
//月份需要byte[1]中的低1位与byte[2]中的高3位组合
int monthN = (((date[1] 1)8 | (date[2]0xE0))0xffff)5;
// 111100000000 | 11000100,年份需要byte[0]与byte[1]的7位拼成,因为月份值只取了byte[1]的低1位,所有只需要右移1位
int yearN = (((date[0]0xff)8 | (date[1]0xFE))0xffff)1;
System.out.println(yearN+”年”+monthN+”月”+dayN+”日”);
}
java8位字符串转日期格式后不正确
要么就把字段改成varchar类型,要么取出来的时候进行format
SELECT TO_CHAR(tbl.birthday, ‘yyyy-mm-dd’) birthday FROM bi_persons tbl
,数据库就是以这种格式存储日期的
java 编程从屏幕输入8-10位字符串,判断是否为日期
public static void main(String[] args)
{
String checkValue = “2000/03/31”;
checkValue = checkValue.replaceAll(“/”, “”)+”000000″;
String year = checkValue.substring(0, 4); // 获取年份
String month = checkValue.substring(4, 6); // 获取月份
Boolean isLeap = leapYear(Integer.parseInt(year)); // 判断闰年
System.out.println(isLeap);
StringBuffer eL= new StringBuffer();
String longMonth = “01030507081012”; // 31天的月份
String fix = “([2][0-3]|[0-1][0-9]|[1-9])[0-5][0-9]([0-5][0-9]|[6][0])”;
if(isLeap month.equals(“02”)){ // 针对2月份的情况 【闰年】
eL.append(“\\d{4}([1][0-2]|[0][0-9])([2][0-1]|[1-2][0-9]|[0][1-9]|[1-9])”+fix);
}else if(!isLeap month.equals(“02”)){ // 针对2月份的情况 【非闰年】
eL.append(“\\d{4}([1][0-2]|[0][0-9])([2][0-1]|[1-2][0-8]|[0][1-9]|[1-9])”+fix);
}else if(longMonth.contains(month)){ // 31天月份
eL.append(“\\d{4}([1][0-2]|[0][0-9])([3][0-1]|[1-2][0-9]|[0][1-9]|[1-9])”+fix);
}else{ // 30天月份
eL.append(“\\d{4}([1][0-2]|[0][0-9])([3][0]|[1-2][0-9]|[0][1-9]|[1-9])”+fix);
}
Pattern p = Pattern.compile(eL.toString());
Matcher m = p.matcher(checkValue);
boolean flag = m.matches();
if(flag )
{
System.out.println(“格式正确”);
}
else
{
System.out.println(“格式错误”);
}
}
public static boolean leapYear(int year) {
Boolean isLeap = false;
if (((year % 100 == 0) (year % 400 == 0))
|| ((year % 100 != 0) (year % 4 == 0)))
isLeap = true;
return isLeap;
}
如何在java8中愉快地处理日期和时间java8新增了localdate和localtim
java8中的localdate和localtime用法举例如下:
这两个方法使我们可以方便的实现将旧的日期类转换为新的日期类,具体思路都是通过Instant当中介,然后通过Instant来创建LocalDateTime(这个类可以很容易获取LocalDate和LocalTime),新的日期类转旧的也是如此,将新的先转成LocalDateTime,然后获取Instant,接着转成Date,具体实现细节如下:
// 01. java.util.Date — java.time.LocalDateTime
public void UDateToLocalDateTime() {
java.util.Date date = new java.util.Date();
Instant instant = date.toInstant();
ZoneId zone = ZoneId.systemDefault();
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);
}
// 02. java.util.Date — java.time.LocalDate
public void UDateToLocalDate() {
java.util.Date date = new java.util.Date();
Instant instant = date.toInstant();
ZoneId zone = ZoneId.systemDefault();
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);
LocalDate localDate = localDateTime.toLocalDate();
}
// 03. java.util.Date — java.time.LocalTime
public void UDateToLocalTime() {
java.util.Date date = new java.util.Date();
Instant instant = date.toInstant();
ZoneId zone = ZoneId.systemDefault();
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);
LocalTime localTime = localDateTime.toLocalTime();
}
// 04. java.time.LocalDateTime — java.util.Date
public void LocalDateTimeToUdate() {
LocalDateTime localDateTime = LocalDateTime.now();
ZoneId zone = ZoneId.systemDefault();
Instant instant = localDateTime.atZone(zone).toInstant();
java.util.Date date = Date.from(instant);
}
// 05. java.time.LocalDate — java.util.Date
public void LocalDateToUdate() {
LocalDate localDate = LocalDate.now();
ZoneId zone = ZoneId.systemDefault();
Instant instant = localDate.atStartOfDay().atZone(zone).toInstant();
java.util.Date date = Date.from(instant);
}
// 06. java.time.LocalTime — java.util.Date
public void LocalTimeToUdate() {
LocalTime localTime = LocalTime.now();
LocalDate localDate = LocalDate.now();
LocalDateTime localDateTime = LocalDateTime.of(localDate, localTime);
ZoneId zone = ZoneId.systemDefault();
Instant instant = localDateTime.atZone(zone).toInstant();
java.util.Date date = Date.from(instant);
}
java字符串转换成日期
//取后面八位,按照yyyyMMdd的格式转为日期//再把日期转为相应的格式的字符串//如果这过程中出现了异常,即不是日期的格式,则直接输出字符串即可 public static void main(String args[]){ String str = “今天的日期是20080830”; try{ String temp = str.subString(str.length()-8); Date date = new DateFormat(“yyyyMMdd”).parse(temp); String dateStr = new DateFormat(“yyyy-MM-dd”).format(date); //方法二 //String dateStr = new DateFormat(“yyyy年MM月dd日”).format(date); System.out.println(str.subString(0, str.length()-8) + dateStr); }catch(Exceptiion e){ System.out.println(str); }}
java8字符串转日期的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、java8字符串转日期的信息别忘了在本站进行查找喔。