我想知道是否有一种简单的方法,使用moment.js库,将十进制时间间隔(例如,1.074分钟)转换为等效的'mm:ss'值.我目前正在使用一个功能,它在负时间内不能很好地工作(它输出'-m:ss'格式的值):
function secTommss(sec){
var min = Math.floor(sec/60)
sec = Math.round(Math.abs(sec) % 60);
return min + ":" + (sec < 10 ? "0" + sec : sec)
}
Run Code Online (Sandbox Code Playgroud) 我有一个包含DateTimeRangeField的模型,如https://docs.djangoproject.com/en/1.8/ref/contrib/postgres/fields/#defining-your-own-range-types中所述,见下文:
models.py
from django.db import models
from django.contrib.postgres.fields import DateTimeRangeField, RangeField
class ReportPeriod(models.Model):
id = models.IntegerField(primary_key=True)
period_name = models.TextField(blank=True)
active_range = DateTimeRangeField(blank=True)
class Meta:
managed = False
db_table = 'report_period'
Run Code Online (Sandbox Code Playgroud)
当我使用它来查询远程数据库时(例如ReportPeriod.objects.using('remote_db').filter(id='1',active_range__contains=datetime.now())返回预期的QuerySet),该模型工作正常.
但是,当我尝试在我的视图或shell中保存新的ReportPeriod时,我得到了一个ProgrammingError: can't adapt type 'DateTimeRangeField'.以下是我在获取错误之前在shell中执行的步骤:
new_period = ReportPeriod(id=1,period_name = 'morning',active_range = DateTimeRangeField(datetime(2015,1,1,0,0,0),datetime(2016,1,1,0,0,0)))
new_period.save(using='remote_db')
Run Code Online (Sandbox Code Playgroud)
这是整个错误跟踪:
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "~/.virtualenvs/mve/lib/python2.7/site-packages/django/db/models/base.py", line 710, in save
force_update=force_update, update_fields=update_fields)
File "~/.virtualenvs/mve/lib/python2.7/site-packages/django/db/models/base.py", line 738, in save_base
updated = self._save_table(raw, cls, …Run Code Online (Sandbox Code Playgroud) 我正在尝试设置一项服务,以检查何时在设备中安装了新的活动更新.我已经在应用程序活动中完成了这一操作Broadcastreceiver,在清单中声明它并且它完美地运行.
但是,当我尝试在服务中运行该接收器并动态声明它时,我onReceive永远不会被调用.这是我的服务代码:
public class UpdateService extends Service {
private static String mPackage = "com.my.package";
private static String mActivityName = "myActivity";
private BroadcastReceiver mUpdateReceiver;
@Override
public void onCreate() {
super.onCreate();
mUpdateReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("mTag","In the BroadcastReceiver onReceive()");
if (intent.getAction().equalsIgnoreCase(Intent.ACTION_PACKAGE_REPLACED)) {
// Log that a new update is has been found
Log.d("mTag","New version of the app has been installed.");
Log.d("mTag", "Intent data: " + intent.getDataString());
Log.d("mTag","My package: " …Run Code Online (Sandbox Code Playgroud)