C#DateTimeOffset与LocalDate的比较

时间:2016-11-08 06:37:41

标签: c# .net c#-4.0

我正在使用返回DateTimeOffset的Microsoft API。该物业有以下文件 - 此值是根据当地测量的当前UTC时间计算的。

我想将此时间与托管我的应用程序的本地服务器进行比较。 (因此DateTimeOffset由Microsoft API返回,我要比较的位置在我的服务器上。这两个可以有不同的时区。)

检查DateTimeOffset时,日期& UTC属性具有相同的日期&时间和Kind属性未指定。

我目前正在使用DateTimeOffset < DateTime.UtcNow来检查条件。我做对了吗?

2 个答案:

答案 0 :(得分:0)

您应该使用public class Nauto extends BroadcastReceiver { final int SDK_INT = Build.VERSION.SDK_INT; public Nauto() { } @Override public void onReceive(Context context, Intent intent) { long _Nalarm; Log.d("Bootcompleted","starting"); if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")){ AlarmManager alarmMgr = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); Intent intent1 = new Intent(context, TestNotifyService.class); PendingIntent alarmIntent = PendingIntent.getService(context, 0, intent1, 0); Calendar now = Calendar.getInstance(); Calendar wakeupcall = Calendar.getInstance(); wakeupcall.setTimeInMillis(System.currentTimeMillis()); wakeupcall.set(Calendar.HOUR_OF_DAY, 15); wakeupcall.set(Calendar.MINUTE, 30); if (wakeupcall.getTimeInMillis() <= now.getTimeInMillis()) _Nalarm=wakeupcall.getTimeInMillis() + (AlarmManager.INTERVAL_DAY+1); else _Nalarm=wakeupcall.getTimeInMillis(); if (SDK_INT < Build.VERSION_CODES.KITKAT) { alarmMgr.set(AlarmManager.RTC_WAKEUP,_Nalarm, alarmIntent); Log.d("lowerNB","hahah"); } else if (Build.VERSION_CODES.KITKAT <= SDK_INT && SDK_INT < Build.VERSION_CODES.M) { alarmMgr.setExact(AlarmManager.RTC_WAKEUP,_Nalarm,alarmIntent); Log.d("kitkatNB","hahah"); } else if (SDK_INT >= Build.VERSION_CODES.M) { alarmMgr.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP,_Nalarm,alarmIntent); Log.d("marshmallowNB","hahah"); } } } }

<receiver android:name=".Nauto" android:exported="true" android:enabled="true"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver> <service android:name=".TestNotifyService" android:exported="true" android:enabled="true"/> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="com.android.alarm.permission.SET_ALARM"/> <uses-permission android:name="android.permission.WAKE_LOCK"/> 方法会将dateTimeOffset.LocalDateTime < dateTime转换为您当地的时区(.LocalDateTime),因此您可以安全地与当地DateTimeOffset进行比较。

答案 1 :(得分:0)

您可以使用以下代码

获取分钟内的偏移时差
// Get the GMT time difference offset (This is your local time offset difference)
var timeOffsetinMiniut = DateTimeOffset.Now.Offset.TotalMinutes;

现在您可以使用在当地时间添加此偏移量,使其成为UTC时间。

var myNewDateTime = System.DateTime.Now.AddMinutes(timeOffsetinMiniut)

现在,您可以比较时间和新服务器时间。

myNewDateTime  < DateTime.UtcNow

希望这会对你有所帮助。

由于