DateAndTime是Snmpv
下面是RFC中對DateAndTime的定義
DateAndTime ::= OCTET STRING (SIZE (
由定義可見
既然DateAndTime也是Octet String
import java
import org
import org
import org
import org
import org
import org
import diation
import diation
public class SNMPAdapter extends SNMPManager{
private Logger adapterlog = INMSLog
private Logger recvlog = INMSLog
public SNMPAdapter(String snmpIP
super(snmpIP
}
@Override
protected void notifyMsg(CommandResponderEvent event) {
(
PDU pdu = event
Vector vec = pdu
(
for (int i =
String oidNameValue =
VariableBinding vb = (VariableBinding)vec
if (vb
String value = new String(((OctetString)vb
if(vb
oidNameValue =
}
else{
oidNameValue =
}
}
else{
//略
}
}
}
public String parseDateAndTime(Variable v){
(
// (
OctetString oct = (OctetString)v;
// (
byte[] bts = oct
byte[] format_str = new byte[
int year;
int month;
int day;
int hour;
int minute;
int second;
int msecond;
// for(byte b:bts){
// (
// }
year=bts[
month=bts[
day=bts[
hour=bts[
minute=bts[
second=bts[
msecond=bts[
//以下為格式化字符串
int index=
int temp=year;
for(
format_str[index]=(byte)(
temp/=
}
format_str[
index=
temp=month;
for(
format_str[index]=(byte)(
temp/=
}
format_str[
index=
temp=day;
for(
format_str[index]=(byte)(
temp/=
}
format_str[
index=
temp=hour;
for(
format_str[index]=(byte)(
temp/=
}
format_str[
index=
temp=minute;
for(
format_str[index]=(byte)(
temp/=
}
format_str[
index=
temp=second;
for(
format_str[index]=(byte)(
temp/=
}
// format_str[
// index=
// temp=msecond;
// for(
// format_str[index]=(byte)(
// temp/=
// }
//
// format_str[
// (
return new String(format_str)
}
}
實際運行log如下(注意值為
YYWifiMapper::parseDateAndTime》 v=
YYWifiMapper::parseDateAndTime》 format_str =
處理年的時候稍有不同
其實自己用計算器就能算出時間
主要是年的計算byte是可以為負值
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26305.html