Это может быть то, что вы ищете: "yyyy-MM-dd'T'HH:mm:ss.SSSXXX"
Date parsed1 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX", Locale.US).parse("2019-03-01T22:22:50.591Z");
System.out.println(parsed1); // Fri Mar 01 16:22:50 CST 2019
Date parsed2 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX", Locale.US).parse("2019-03-01T22:22:50.591-08:00");
System.out.println(parsed2); // Sat Mar 02 00:22:50 CST 2019
Как указывает Бэзил ниже, они также работают, если вы используете Java 8+ или бэкпорт JSR 310: [114 ]
OffsetDateTime parsed1 = OffsetDateTime.parse("2019-03-01T22:22:50.591Z");
System.out.println(parsed1); // Fri Mar 01 16:22:50 CST 2019
OffsetDateTime parsed2 = OffsetDateTime.parse("2019-03-01T22:22:50.591-08:00");
System.out.println(parsed2); // Sat Mar 02 00:22:50 CST 2019
Можно использовать SHChangeNotify API.
[System.Runtime.InteropServices.DllImport("Shell32.dll")]
private static extern int SHChangeNotify(int eventId, int flags, IntPtr item1, IntPtr item2);
и затем назовите это этим путем
SHChangeNotify(0x8000000, 0x1000, IntPtr.Zero, IntPtr.Zero);
Я думаю, что Вы ищете IActiveDesktop:: ApplyChanges. Необходимо будет получить доступ к этому через COM-интерфейс, который должен быть довольно легким со всей документацией, которую Microsoft предоставляет на COM Interop.