2017-02-07 6 views
0

Я действительно новичок в F #. Ниже я попытался создать функцию, которая вычисляет разницу между двумя датами.Работа с датами с F #

let test date = 
    let today = DateTime.Now 
    let fromdate = DateTime.Parse(date) 
    let count = Convert.ToInt32(today - fromdate) 
    date 

Приведенный выше код запрашивает ошибку

System.InvalidCastException: Невозможно привести объект типа 'System.TimeSpan' к типу 'System.IConvertible'.

+1

Какой прибор вы пытаетесь вернуть? – ildjarn

+0

вы также должны вернуть 'count', а не' date' из вашей функции. предполагая, что вы ищете счет. – s952163

ответ

1

Вам не нужно преобразовывать временной интервал в результате применения оператора «минус» к двум датам. Снимок экрана ниже - моя попытка исправить вашу функцию и пример значения, которое она возвращает.

Result of applying the fixed function

2

Разница между двумя DateTimes даст вам TimeSpan object, на котором вы можете дополнительно работать. Это должно быть последнее утверждение в вашей функции, так как оно будет использоваться как возвращаемое значение. Вы можете проверить документы MS в ссылке на различные свойства и методы. Строго говоря, это часть BCL, поэтому это скорее .NET, чем просто F # (вы бы сделали то же самое в VB или C#). Если вы хотите дополнительно уточнить свою функцию, вы должны также изучить DateTime.TryParse и обработать возможность не получать действительную дату.

open System 

let test date = 
    let today = DateTime.Now 
    let fromdate = DateTime.Parse(date) 
    (today - fromdate).Days 

test "2017/12/31" // val it : int = -325 
Смежные вопросы