Время на c# и на Android

189
04 мая 2018, 10:35

в C# есть возможность передать время через массив байтов таким образом:

DateTime FromDate = DateTime.Now;
b = BitConverter.GetBytes(FromDate.ToBinary())
//и обратно
FromDate = DateTime.FromBinary(BitConverter.ToInt64(b, 0));

как сделать тоже самое на андроид?

Date FromDate = new Date();
byte[] bb = ByteBuffer.allocate(8).putLong(FromDate.getTime()).array();

оно возвращает во первых массив развёрнутый. а во вторых значения разные.

можно привести в нужный вид из андроида с помощью функции:

static DateTime JavaLongToCSharpLong(long javaLong)
{
    TimeSpan ss = TimeSpan.FromMilliseconds(javaLong);
    DateTime Jan1st1970 = 
        new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
    DateTime ddd = Jan1st1970.Add(ss);
    DateTime final = ddd.ToUniversalTime();
    return final;
}

но мне нужно чтобы андроид код сразу выдавал значение, которое можно будет принять без этой функции

Answer 1

решил так:

 ByteBuffer.allocate(8).putLong(dt2.getTime().getTime()*10000+621355968000000000l).array();

т.е. добавил разницу во времени

(dt2.getTime().getTime()*10000 - это не очень точно, но для моей задачи достаточно)

READ ALSO
Чтение ячеек из SQL базы

Чтение ячеек из SQL базы

Прошу помощи в организации чтения адресов из базы данных (SQL)Есть таблица, в которую занесены IP адреса, каким-то образом необходимо организовать...

245
Кастомная обработка исключений .Net Core MVC

Кастомная обработка исключений .Net Core MVC

В проекте ASPNet Core MVC необходимо реализовать обработку исключений

209
Cannot implicitly convert type 'byte[]' to 'byte'

Cannot implicitly convert type 'byte[]' to 'byte'

Не получается преобразовать byte[] в byteКогда я хочу вернуть открытый и закрытый ключи byte[] keys = new byte[] { publicKey, privateKey }; Пишет Cannot implicitly convert type 'byte[]'...

190