我正在使用返回DateTimeOffset
的Microsoft API。该物业有以下文件 - 此值是根据当地测量的当前UTC时间计算的。
我想将此时间与托管我的应用程序的本地服务器进行比较。 (因此DateTimeOffset由Microsoft API返回,我要比较的位置在我的服务器上。这两个可以有不同的时区。)
检查DateTimeOffset
时,日期& UTC属性具有相同的日期&时间和Kind
属性未指定。
我目前正在使用DateTimeOffset < DateTime.UtcNow
来检查条件。我做对了吗?
答案 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
希望这会对你有所帮助。
由于