diff --git a/properties.go b/properties.go
index 195dd77..8610622 100644
--- a/properties.go
+++ b/properties.go
@@ -13,6 +13,7 @@
 	"os"
 	"strconv"
 	"strings"
+	"time"
 	"unicode/utf8"
 )
 
@@ -97,6 +98,29 @@
 
 // ----------------------------------------------------------------------------
 
+// GetDuration parses the expanded value as an time.Duration if the key exists.
+// If key does not exist or the value cannot be parsed the default
+// value is returned.
+func (p *Properties) GetDuration(key string, def time.Duration) time.Duration {
+	v, err := p.getInt64(key)
+	if err != nil {
+		return def
+	}
+	return time.Duration(v)
+}
+
+// MustGetDuration parses the expanded value as an time.Duration if the key exists.
+// If key does not exist or the value cannot be parsed the function panics.
+func (p *Properties) MustGetDuration(key string) time.Duration {
+	v, err := p.getInt64(key)
+	if err != nil {
+		panic(err)
+	}
+	return time.Duration(v)
+}
+
+// ----------------------------------------------------------------------------
+
 // GetFloat64 parses the expanded value as a float64 if the key exists.
 // If key does not exist or the value cannot be parsed the default
 // value is returned.
diff --git a/properties_test.go b/properties_test.go
index 6eaabb5..2563f63 100644
--- a/properties_test.go
+++ b/properties_test.go
@@ -12,6 +12,7 @@
 	"os"
 	"strings"
 	"testing"
+	"time"
 
 	. "launchpad.net/gocheck"
 )
@@ -160,6 +161,29 @@
 
 // ----------------------------------------------------------------------------
 
+type durationTest struct {
+	input, key string
+	def, value time.Duration
+}
+
+var durationTests = []*durationTest{
+	// valid values
+	&durationTest{"key = 1", "key", 999, 1},
+	&durationTest{"key = 0", "key", 999, 0},
+	&durationTest{"key = -1", "key", 999, -1},
+	&durationTest{"key = 0123", "key", 999, 123},
+
+	// invalid values
+	&durationTest{"key = 0xff", "key", 999, 999},
+	&durationTest{"key = 1.0", "key", 999, 999},
+	&durationTest{"key = a", "key", 999, 999},
+
+	// non existent key
+	&durationTest{"key = 1", "key2", 999, 999},
+}
+
+// ----------------------------------------------------------------------------
+
 type floatTest struct {
 	input, key string
 	def, value float64
@@ -292,6 +316,24 @@
 	c.Assert(func() { p.MustGetBool("invalid") }, PanicMatches, "invalid key: invalid")
 }
 
+func (l *TestSuite) TestGetDuration(c *C) {
+	for _, test := range durationTests {
+		p, err := parse(test.input)
+		c.Assert(err, IsNil)
+		c.Assert(p.Len(), Equals, 1)
+		c.Assert(p.GetDuration(test.key, test.def), Equals, test.value)
+	}
+}
+
+func (l *TestSuite) TestMustGetDuration(c *C) {
+	input := "key = 123\nkey2 = ghi"
+	p, err := parse(input)
+	c.Assert(err, IsNil)
+	c.Assert(p.MustGetDuration("key"), Equals, time.Duration(123))
+	c.Assert(func() { p.MustGetDuration("key2") }, PanicMatches, "strconv.ParseInt: parsing.*")
+	c.Assert(func() { p.MustGetDuration("invalid") }, PanicMatches, "invalid key: invalid")
+}
+
 func (l *TestSuite) TestGetFloat64(c *C) {
 	for _, test := range floatTests {
 		p, err := parse(test.input)
@@ -425,7 +467,7 @@
 
 func (l *TestSuite) TestPanicOn32BitIntOverflow(c *C) {
 	is32Bit = true
-	var min, max int64 = math.MinInt32-1, math.MaxInt32+1
+	var min, max int64 = math.MinInt32 - 1, math.MaxInt32 + 1
 	input := fmt.Sprintf("min=%d\nmax=%d", min, max)
 	p, err := parse(input)
 	c.Assert(err, IsNil)
@@ -437,7 +479,7 @@
 
 func (l *TestSuite) TestPanicOn32BitUintOverflow(c *C) {
 	is32Bit = true
-	var max uint64 = math.MaxUint32+1
+	var max uint64 = math.MaxUint32 + 1
 	input := fmt.Sprintf("max=%d", max)
 	p, err := parse(input)
 	c.Assert(err, IsNil)
