I use this function for writing to file in my UWP project:
public static async Task WriteToFileAsync<T>(string fileName, T objectToWrite) where T : new()
{
    StorageFolder storageFolder = ApplicationData.Current.LocalFolder
    TextWriter writer = null;
    try
    {
        StorageFile file = await storageFolder.CreateFileAsync(fileName + ".txt");
        var serializer = new XmlSerializer(typeof(T));
        var stream = await file.OpenStreamForWriteAsync();
        writer = new StreamWriter(stream);
        serializer.Serialize(writer, objectToWrite);
    }
    finally
    {
        if (writer != null)
            writer.Close();
    }
}
However this doesn't seem to write DateTimeOffset values to file.
The solution that I currently use is converting it to a string but this seems a bit messy.
Is there a more elegant way to do this?