Skip to content

Commit 2225b86

Browse files
committed
Added support for automatic detection of Date objects.
1 parent c73e0bf commit 2225b86

File tree

4 files changed

+10
-4
lines changed

4 files changed

+10
-4
lines changed

json2dbf.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ var dbf = require('./'),
22
fs = require('fs');
33

44
var buf = dbf.structure([
5-
{foo:'bar',noo:10},
5+
{foo:'bar',noo:new Date()},
66
{foo:'louie'}
77
]);
88

src/fields.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ var types = {
44
string: 'C',
55
number: 'N',
66
boolean: 'L',
7+
date: 'D',
78
// type to use if all values of a field are null
89
null: 'C'
910
};
@@ -36,7 +37,7 @@ function inherit(a, b) {
3637

3738
function obj(_) {
3839
var fields = {}, o = [];
39-
for (var p in _) fields[p] = _[p] === null ? 'null' : typeof _[p];
40+
for (var p in _) fields[p] = _[p] === null ? 'null' : _[p] instanceof Date ? 'date' : typeof _[p];
4041
for (var n in fields) {
4142
var t = types[fields[n]];
4243
if(t){

src/lib.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,8 @@ module.exports.writeField = function writeField(view, fieldLength, str, offset)
3131
}
3232
return offset;
3333
};
34+
35+
module.exports.writeDate = function(date) {
36+
if(!date || isNaN(date.getTime())) return " ";
37+
return ("0000"+date.getFullYear()).slice(-4) + ("00"+(date.getMonth()+1)).slice(-2) + ("00"+date.getDate()).slice(-2);
38+
};

src/structure.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ module.exports = function structure(data, meta) {
2929
view.setUint8(0, 0x03);
3030
// date of last update
3131
view.setUint8(1, now.getFullYear() - 1900);
32-
view.setUint8(2, now.getMonth());
32+
view.setUint8(2, now.getMonth()+1);
3333
view.setUint8(3, now.getDate());
3434
// number of records
3535
view.setUint32(4, data.length, true);
@@ -75,7 +75,7 @@ module.exports = function structure(data, meta) {
7575
// date
7676
case 'D':
7777
offset = lib.writeField(view, 8,
78-
lib.lpad(val.toString(), 8, ' '), offset);
78+
lib.writeDate(val), offset);
7979
break;
8080

8181
// number

0 commit comments

Comments
 (0)