diff --git a/lib/datetime_utils.dart b/lib/datetime_utils.dart
new file mode 100644
index 00000000..3ee41ab2
--- /dev/null
+++ b/lib/datetime_utils.dart
@@ -0,0 +1,28 @@
+import 'package:intl/intl.dart';
+
+String toIso8601WithTimezone(DateTime dt) {
+  var result = DateFormat("y-M-dTH:m:s").format(dt);
+  var offset = dt.timeZoneOffset;
+  if (offset.inSeconds == 0) {
+    return result + 'Z';
+  } else {
+    int minutes = (offset.inMinutes % 60);
+    int hours = offset.inHours.toInt();
+
+    String minutesStr;
+    if (minutes < 10) {
+      minutesStr = '0' + minutes.toString();
+    } else {
+      minutesStr = minutes.toString();
+    }
+
+    String hourStr;
+    if (hours < 10) {
+      hourStr = '0' + hours.toString();
+    } else {
+      hourStr = hours.toString();
+    }
+
+    return result + '+' + hourStr + ':' + minutesStr;
+  }
+}
diff --git a/lib/note.dart b/lib/note.dart
index 1758b8cb..abc31c5e 100644
--- a/lib/note.dart
+++ b/lib/note.dart
@@ -1,3 +1,5 @@
+import 'package:journal/datetime_utils.dart';
+
 typedef NoteAdder(Note note);
 typedef NoteRemover(Note note);
 typedef NoteUpdator(Note note);
@@ -12,24 +14,51 @@ class Note implements Comparable {
   factory Note.fromJson(Map<String, dynamic> json) {
     String id;
     if (json.containsKey("id")) {
-      var val = json["id"];
-      if (val.runtimeType == String) {
-        id = val;
-      } else {
-        id = val.toString();
+      id = json["id"].toString();
+    }
+
+    DateTime created;
+    if (json.containsKey("created")) {
+      var createdStr = json['created'].toString();
+      try {
+        created = DateTime.parse(json['created']);
+      } catch (ex) {}
+
+      if (created == null) {
+        var regex = new RegExp(
+            r"(\d{4})-(\d{2})-(\d{2})T(\d{2})\:(\d{2})\:(\d{2})\+(\d{2})\:(\d{2})");
+        if (regex.hasMatch(createdStr)) {
+          // FIXME: Handle the timezone!
+          createdStr = createdStr.substring(0, 19);
+          created = DateTime.parse(json['created']);
+        }
       }
+
+      // FIXME: Get created from file system or from git!
+      if (created == null) {
+        created = DateTime.now();
+      }
+    }
+
+    if (id == null && created != null) {
+      id = toIso8601WithTimezone(created);
+    }
+
+    String body = "";
+    if (json.containsKey("body")) {
+      body = json['body'];
     }
 
     return new Note(
       id: id,
-      created: DateTime.parse(json['created']),
-      body: json['body'],
+      created: created,
+      body: body,
     );
   }
 
   Map<String, dynamic> toJson() {
     return {
-      "created": created.toIso8601String(),
+      "created": toIso8601WithTimezone(created),
       "body": body,
       "id": id,
     };
diff --git a/lib/state_container.dart b/lib/state_container.dart
index 8e515df9..13ce97ee 100644
--- a/lib/state_container.dart
+++ b/lib/state_container.dart
@@ -12,6 +12,7 @@ import 'package:journal/note.dart';
 import 'package:journal/storage/notes_repository.dart';
 import 'package:journal/storage/git_storage.dart';
 import 'package:journal/storage/git.dart';
+import 'package:journal/datetime_utils.dart';
 
 Future<Directory> getNotesDir() async {
   var appDir = await getGitBaseDirectory();
@@ -49,7 +50,7 @@ class StateContainerState extends State<StateContainer> {
     getDirectory: getNotesDir,
     dirName: "journal",
     gitCloneUrl: "root@bcn.vhanda.in:git/test",
-    fileNameGenerator: (Note n) => n.created.toIso8601String(),
+    fileNameGenerator: (Note n) => toIso8601WithTimezone(n.created),
   );
 
   StateContainerState(bool onBoardingCompleted) {
diff --git a/test/datetime_utils_test.dart b/test/datetime_utils_test.dart
new file mode 100644
index 00000000..cd171bcc
--- /dev/null
+++ b/test/datetime_utils_test.dart
@@ -0,0 +1,13 @@
+import 'package:test/test.dart';
+import 'package:journal/datetime_utils.dart';
+
+main() {
+  group('DateTime Utils', () {
+    test('Test random date', () {
+      var dateTime = DateTime.utc(2011, 12, 23, 10, 15, 30);
+      var str = toIso8601WithTimezone(dateTime);
+
+      expect(str, "2011-12-23T10:15:30+00:00");
+    });
+  });
+}