1 21 package com.db4o.handlers; 22 23 import java.util.*; 24 25 import com.db4o.*; 26 27 30 public class NetDateTime extends NetSimpleTypeHandler{ 32 private final static String ZEROES="0000"; 33 34 private final static String [] MONTHS= { 35 "Jan", 36 "Feb", 37 "Mar", 38 "Apr", 39 "May", 40 "Jun", 41 "Jul", 42 "Aug", 43 "Sep", 44 "Oct", 45 "Nov", 46 "Dec" 47 }; 48 49 private static final long ERA_DIFFERENCE_IN_MS = 62135596800000L; 54 private static final long TICKS_TO_MS_RATIO = 10000; 56 57 public NetDateTime(YapStream stream) { 58 super(stream, 25, 8); 59 } 60 61 public String toString(byte[] bytes) { 62 long ticks = 0; 63 for (int i = 0; i < 8; i++) { 64 ticks = (ticks << 8) + (bytes[i] & 255); 65 } 66 long ms = ticks / TICKS_TO_MS_RATIO - ERA_DIFFERENCE_IN_MS; 67 Date date=new Date(ms); 68 Calendar cal=Calendar.getInstance(TimeZone.getTimeZone("UTC")); 69 cal.setTime(date); 70 StringBuffer result=new StringBuffer () 71 .append(prependZeroes(cal.get(Calendar.YEAR),4)) 72 .append('-') 73 .append(MONTHS[cal.get(Calendar.MONTH)]) 74 .append('-') 75 .append(prependZeroes(cal.get(Calendar.DAY_OF_MONTH),2)) 76 .append(", ") 77 .append(prependZeroes(cal.get(Calendar.HOUR_OF_DAY),2)) 78 .append(':') 79 .append(prependZeroes(cal.get(Calendar.MINUTE),2)) 80 .append(':') 81 .append(prependZeroes(cal.get(Calendar.SECOND),2)) 82 .append('.') 83 .append(prependZeroes(cal.get(Calendar.MILLISECOND),3)) 84 .append(" UTC"); 85 return result.toString(); 86 } 87 88 private String prependZeroes(int val,int size) { 89 String str=String.valueOf(val); 90 int missing=size-str.length(); 91 if(missing>0) { 92 str=ZEROES.substring(0,missing)+str; 93 } 94 return str; 95 } 96 } 97 | Popular Tags |