diff --git a/drive/drive.go b/drive/drive.go index 5e319077e..d1cd774a0 100644 --- a/drive/drive.go +++ b/drive/drive.go @@ -38,6 +38,8 @@ const ( rcloneClientId = "202264815644.apps.googleusercontent.com" rcloneClientSecret = "X4Z3ca8xfWDb1Voo-F9a7ZxJ" driveFolderType = "application/vnd.google-apps.folder" + RFC3339In = time.RFC3339 + RFC3339Out = "2006-01-02T15:04:05.000000000Z07:00" ) // Globals @@ -674,7 +676,7 @@ func (f *FsDrive) ListDir() fs.DirChan { Bytes: -1, Count: -1, } - dir.When, _ = time.Parse(time.RFC3339, item.ModifiedDate) + dir.When, _ = time.Parse(RFC3339In, item.ModifiedDate) out <- dir return false }) @@ -711,7 +713,7 @@ func (f *FsDrive) Put(in io.Reader, remote string, modTime time.Time, size int64 if mimeType == "" { mimeType = "application/octet-stream" } - modifiedDate := modTime.Format(time.RFC3339Nano) + modifiedDate := modTime.Format(RFC3339Out) // Define the metadata for the file we are going to create. info := &drive.File{ @@ -864,7 +866,7 @@ func (o *FsObjectDrive) ModTime() time.Time { fs.Log(o, "Failed to read metadata: %s", err) return time.Now() } - modTime, err := time.Parse(time.RFC3339, o.modifiedDate) + modTime, err := time.Parse(RFC3339In, o.modifiedDate) if err != nil { fs.Log(o, "Failed to read mtime from object: %s", err) return time.Now() @@ -882,7 +884,7 @@ func (o *FsObjectDrive) SetModTime(modTime time.Time) { } // New metadata info := &drive.File{ - ModifiedDate: modTime.Format(time.RFC3339Nano), + ModifiedDate: modTime.Format(RFC3339Out), } // Set modified date _, err = o.drive.svc.Files.Update(o.id, info).SetModifiedDate(true).Do() @@ -920,7 +922,7 @@ func (o *FsObjectDrive) Open() (in io.ReadCloser, err error) { func (o *FsObjectDrive) Update(in io.Reader, modTime time.Time, size int64) error { info := &drive.File{ Id: o.id, - ModifiedDate: modTime.Format(time.RFC3339Nano), + ModifiedDate: modTime.Format(RFC3339Out), } // Make the API request to upload metadata and file data. diff --git a/rclonetest/rclonetest.go b/rclonetest/rclonetest.go index ec42f7ea7..7431dda6f 100644 --- a/rclonetest/rclonetest.go +++ b/rclonetest/rclonetest.go @@ -145,8 +145,9 @@ func TestMkdir(flocal, fremote fs.Fs) { CheckListing(fremote, items) } -var t1 = Time("2001-02-03T04:05:06.999999999Z") +var t1 = Time("2001-02-03T04:05:06.499999999Z") var t2 = Time("2011-12-25T12:59:59.123456789Z") +var t3 = Time("2011-12-30T12:59:59.000000000Z") func TestCopy(flocal, fremote fs.Fs) { WriteFile("empty space", "", t1) @@ -198,14 +199,14 @@ func TestSync(flocal, fremote fs.Fs) { // ------------------------------------------------------------ log.Printf("Sync after adding a file") - WriteFile("potato", "------------------------------------------------------------", t1) + WriteFile("potato", "------------------------------------------------------------", t3) err = fs.Sync(fremote, flocal, true) if err != nil { log.Fatalf("Sync failed: %v", err) } items = []Item{ {Path: "empty space", Size: 0, ModTime: t2, Md5sum: "d41d8cd98f00b204e9800998ecf8427e"}, - {Path: "potato", Size: 60, ModTime: t1, Md5sum: "d6548b156ea68a4e003e786df99eee76"}, + {Path: "potato", Size: 60, ModTime: t3, Md5sum: "d6548b156ea68a4e003e786df99eee76"}, } CheckListing(flocal, items) CheckListing(fremote, items) @@ -213,14 +214,14 @@ func TestSync(flocal, fremote fs.Fs) { // ------------------------------------------------------------ log.Printf("Sync after changing a file's size only") - WriteFile("potato", "smaller but same date", t1) + WriteFile("potato", "smaller but same date", t3) err = fs.Sync(fremote, flocal, true) if err != nil { log.Fatalf("Sync failed: %v", err) } items = []Item{ {Path: "empty space", Size: 0, ModTime: t2, Md5sum: "d41d8cd98f00b204e9800998ecf8427e"}, - {Path: "potato", Size: 21, ModTime: t1, Md5sum: "100defcf18c42a1e0dc42a789b107cd2"}, + {Path: "potato", Size: 21, ModTime: t3, Md5sum: "100defcf18c42a1e0dc42a789b107cd2"}, } CheckListing(flocal, items) CheckListing(fremote, items) @@ -242,7 +243,7 @@ func TestSync(flocal, fremote fs.Fs) { before := []Item{ {Path: "empty space", Size: 0, ModTime: t2, Md5sum: "d41d8cd98f00b204e9800998ecf8427e"}, - {Path: "potato", Size: 21, ModTime: t1, Md5sum: "100defcf18c42a1e0dc42a789b107cd2"}, + {Path: "potato", Size: 21, ModTime: t3, Md5sum: "100defcf18c42a1e0dc42a789b107cd2"}, } items = []Item{ {Path: "empty space", Size: 0, ModTime: t2, Md5sum: "d41d8cd98f00b204e9800998ecf8427e"},