62,614
社区成员
发帖
与我相关
我的任务
分享
// 这里 (byte) 忘删了
int nDay = (byte)cal.get(Calendar.DAY_OF_MONTH);
package com.java.test;
import java.nio.ByteBuffer;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
public class DummyMethod {
private static final Map<Integer, Integer> monthMap = new HashMap<>();
static {
monthMap.put(Calendar.JANUARY, 1);
monthMap.put(Calendar.FEBRUARY, 2);
monthMap.put(Calendar.MARCH, 3);
monthMap.put(Calendar.APRIL, 4);
monthMap.put(Calendar.MAY, 5);
monthMap.put(Calendar.JUNE, 6);
monthMap.put(Calendar.JULY, 7);
monthMap.put(Calendar.AUGUST, 8);
monthMap.put(Calendar.SEPTEMBER, 9);
monthMap.put(Calendar.OCTOBER, 10);
monthMap.put(Calendar.NOVEMBER, 11);
monthMap.put(Calendar.DECEMBER, 12);
}
private static final Calendar cal = Calendar.getInstance();
private static final DateFormat df = new SimpleDateFormat("yyyyMMdd");
public static String getDateFromByteArray(byte[] arr) {
int nDate = 0;
if ((arr != null) && (arr.length >= 3)) {
int size = Integer.SIZE / Byte.SIZE;
ByteBuffer bb = ByteBuffer.allocate(size);
bb.put((byte)0);
bb.put(arr[0]);
bb.put(arr[1]);
bb.put(arr[2]);
bb.rewind();
nDate = bb.getInt();
}
int nYear = (nDate >>> 12) & 0xFFF;
int nMonth = (nDate >>> 6) & 0x3F;
int nDay = (nDate & 0x3F);
String fmt = "%04d%02d%02d";
String res = String.format(fmt, nYear, nMonth, nDay);
return res;
}
public static byte[] parseDateAsByteArray(String s) {
byte[] arr = new byte[3];
try {
Date dt = df.parse(s);
cal.setTime(dt);
int nYear = cal.get(Calendar.YEAR);
int nMonth = monthMap.get(cal.get(Calendar.MONTH)).intValue();
int nDay = (byte)cal.get(Calendar.DAY_OF_MONTH);
int nDate = (nYear << 12) | (nMonth << 6) | nDay;
int size = Integer.SIZE / Byte.SIZE;
ByteBuffer bb = ByteBuffer.allocate(size);
bb.asIntBuffer().put(nDate);
arr[0] = bb.get(1);
arr[1] = bb.get(2);
arr[2] = bb.get(3);
} catch (ParseException e) {
arr[0] = 0;
arr[1] = 0;
arr[2] = 0;
}
return arr;
}
public static void main(String[] args) {
String s1 = "20150608";
byte[] r = parseDateAsByteArray(s1);
String s2 = getDateFromByteArray(r);
System.out.println(s2);
}
}
package com.java.test;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
public class DummyMethod {
private static final Map<Integer, Integer> monthMap = new HashMap<>();
static {
monthMap.put(Calendar.JANUARY, 1);
monthMap.put(Calendar.FEBRUARY, 2);
monthMap.put(Calendar.MARCH, 3);
monthMap.put(Calendar.APRIL, 4);
monthMap.put(Calendar.MAY, 5);
monthMap.put(Calendar.JUNE, 6);
monthMap.put(Calendar.JULY, 7);
monthMap.put(Calendar.AUGUST, 8);
monthMap.put(Calendar.SEPTEMBER, 9);
monthMap.put(Calendar.OCTOBER, 10);
monthMap.put(Calendar.NOVEMBER, 11);
monthMap.put(Calendar.DECEMBER, 12);
}
private static final Calendar cal = Calendar.getInstance();
private static final DateFormat df = new SimpleDateFormat("yyyyMMdd");
public static byte[] parseDateAsByteArray(String s) {
byte[] arr = new byte[3];
try {
Date dt = df.parse(s);
cal.setTime(dt);
arr[0] = (byte)cal.get(Calendar.YEAR);
arr[1] = (byte)monthMap.get(cal.get(Calendar.MONTH)).intValue();
arr[2] = (byte)cal.get(Calendar.DAY_OF_MONTH);
} catch (ParseException e) {
arr[0] = 0;
arr[1] = 0;
arr[2] = 0;
}
return arr;
}
public static void main(String[] args) {
String s = "20150608";
byte[] r = parseDateAsByteArray(s);
for (byte b : r) {
System.out.println(b);
}
}
}