2016-11-14 3 views
1

У меня есть два веб-сайта: один находится на C# .NET, а другой - на Java. Мне нужно создать объект DateTime в C#, сериализовать его и добавить его к URL-адресу, который может понять сайт Java.Передача DateTime между C# и Java?

Я знаю, что для этого нужно использовать UTC. Что касается сериализации DateTime в C# и его неэтериализации в Java, какой лучший формат хранения?

Я думаю, что я должен просто использовать что-то вроде тиков в C#, но я не уверен, поддерживает ли Java эту возможность.

+1

json, Strings, Date and DateFormat –

+0

[Класс даты] (https://www.tutorialspoint.com/java/util/java_util_date.htm) в java принимает тики в качестве аргумента в конструкторе. Однако это не единственный доступный вариант. –

+2

Если вы сериализуете его в ISO-строку, почти каждый язык (включая Java) должен иметь возможность его анализировать. – nozzleman

ответ

0

Я думаю, вы можете конвертировать между .NET клещами (100 наносекунд, так как волшебное время) и Java клещами (миллисекунды, так как в другой раз), используя преобразования в этом Java класс:

public class DateTime 
{ 
    static private long TICKS_AT_EPOCH = 621355968000000000L; 

    long ticks; 

    public DateTime(long t) { 
     ticks = t; 
    } 

    public DateTime(Date date) { 
     ticks = TICKS_AT_EPOCH + 10000 * date.getTime(); 
    } 

    public long Ticks() { return ticks; } 

    static public DateTime fromJavaMillis(long millis) 
    { 
     return new DateTime(TICKS_AT_EPOCH + 10000 * millis); 
    } 

    public Date ToDate() 
    { 
     return new Date((ticks-TICKS_AT_EPOCH)/10000); 
    } 
} 

Примечание - Я конечно, я, наверное, нашел, что где-то в Интернете много веков назад - так спасибо создателю :).

Тогда вы можете просто использовать тики от этого к serialize - которые могут напрямую строить .NET DateTime с другой стороны.

Смежные вопросы