分类 编程语言 下的文章

计算当前时间

import datetime
datetime.datetime.now()
# 2019-06-30 10:51:14.089271
# 格式化时间
datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
# 2019-06-30 10:52:05

多加(减)一天

(datetime.datetime.now()+datetime.timedelta(days=1)).strftime("%Y-%m-%
d %H:%M:%S")
# 2019-07-01 10:54:44
(datetime.datetime.now()-datetime.timedelta(days=1)).strftime("%Y-%m-%
d %H:%M:%S")
# 2019-06-29 10:55:44

多加(减)一小时

(datetime.datetime.now()+datetime.timedelta(hours=1)).strftime("%Y-%m-%d %H:%M:%S")
# 2019-06-30 11:56:46
(datetime.datetime.now()-datetime.timedelta(hours=1)).strftime("%Y-%m-%d %H:%M:%S")
# 2019-06-30 09:58:02

多加(减)一分钟

(datetime.datetime.now()+datetime.timedelta(minutes=1)).strftime("%Y-%m-%d %H:%M:%S")

(datetime.datetime.now()-datetime.timedelta(minutes=1)).strftime("%Y-%m-%d %H:%M:%S")

这里的数据类型一般都是date类型,不是字符串以及time类型
先说一个字符串转date的方法:

import datetime
datetime.datetime.strptime

下面我们进入我们的主要任务,计算前或者后的日期

import datetime #导入日期时间模块
today = datetime.date.today() #我们用今天的日期测试,获得今天的日期
print today #输出一下今天日期
day = today - datetime.timedelta(days=1) #用今天日期减掉时间差,参数为n天,就获得今天n天之前的日期。
print day
day = today + datetime.timedelta(days=1) #用今天日期加上时间差,参数为n天,获得今天n天之后的日期。
print day

这里的数据类型一般都是date类型,不是字符串以及time类型
先说一个字符串转date的方法:

import datetime
datetime.datetime.strptime

下面我们进入我们的主要任务,计算前或者后的日期

import datetime #导入日期时间模块
today = datetime.date.today() #我们用今天的日期测试,获得今天的日期
print today #输出一下今天日期
day = today - datetime.timedelta(days=1) #用今天日期减掉时间差,参数为n天,就获得今天n天之前的日期。
print day
day = today + datetime.timedelta(days=1) #用今天日期加上时间差,参数为n天,获得今天n天之后的日期。
print day

小编今天在整理两个文件对比的时候,打算自己做一个可执行的python程序,进行对比,在读取其中一个文件的时候,里面有很多的空行,小编就自己解决了下,希望对大家有所帮助.

f2 = open('setphonedistrict.log.1','r')
for line in f2:
    a=line.strip()
    if len(a)!=0:
        print(a)

是不是很简单呢。

小编在这里总结下比较3位版本号的方法,比如1.2.1和1.3.1。相等就返回0,大于就返回1,小于就返回-1.
实现方法如下:

def compare_version(a, b):
    '''比较版本号'''
    la = a.split('.')
    lb = b.split('.')
    f = 0
    if len(la) > len(lb):
        f = len(la)
    else:
        f = len(lb)
    for i in range(f):
        try:
            if int(la[i]) > int(lb[i]):
                return 1
            elif int(la[i]) == int(lb[i]):
                continue
            else:
                return -1
        except IndexError as e:
            if len(la) > len(lb):
                return 1
            else:
                return -1
    return 0

微信小程序九宫格抽奖,随机选中奖品。

wxml

<view class="container-out">
  <view class="circle" wx:for="{{circleList}}" style="top:{{item.topCircle}}rpx;left:{{item.leftCircle}}rpx;background-color: {{(index%2==0)?colorCircleFirst:colorCircleSecond}};"></view>
  <view class="container-in">
    <view class="content-out" wx:for="{{awardList}}" style="top:{{item.topAward}}rpx;left:{{item.leftAward}}rpx;background-color: {{(index==indexSelect)?colorAwardSelect:colorAwardDefault}};">
     {{item.Award.name}}
    </view>
    <view class="start-btn" bindtap="startGame" style=" background-color:{{isRunning?'#e7930a':'#ffe400'}}">抽奖</view>
  </view>
</view>

js

Page({
    data: {
        circleList: [],//圆点数组
        awardList: [],//奖品数组
        colorCircleFirst: '#FFDF2F',//圆点颜色1
        colorCircleSecond: '#FE4D32',//圆点颜色2
        colorAwardDefault: '#F5F0FC',//奖品默认颜色
        colorAwardSelect: '#ffe400',//奖品选中颜色
        indexSelect: 0,//被选中的奖品index
        isRunning: false,//是否正在抽奖
        Award: [
            { name: '2元', value: 2 },
            { name: '免单', value: 100 },
            { name: '3元', value: 3 },
            { name: '2.66元', value: 2.66 },
            { name: '3.88元', value: 3.88 },
            { name: '4元', value: 4 },
            { name: '3.66元', value: 3.66 },
            { name: '2.88元', value: 2.88 },
           
        ],//奖品数组
    },

    onLoad: function () {
        var _this = this;
        //圆点设置
        var leftCircle = 7.5;
        var topCircle = 7.5;
        var circleList = [];
        for (var i = 0; i < 24; i++) {
            if (i == 0) {
                topCircle = 15;
                leftCircle = 15;
            } else if (i < 6) {
                topCircle = 7.5;
                leftCircle = leftCircle + 102.5;
            } else if (i == 6) {
                topCircle = 15
                leftCircle = 620;
            } else if (i < 12) {
                topCircle = topCircle + 94;
                leftCircle = 620;
            } else if (i == 12) {
                topCircle = 565;
                leftCircle = 620;
            } else if (i < 18) {
                topCircle = 570;
                leftCircle = leftCircle - 102.5;
            } else if (i == 18) {
                topCircle = 565;
                leftCircle = 15;
            } else if (i < 24) {
                topCircle = topCircle - 94;
                leftCircle = 7.5;
            } else {
                return
            }
            circleList.push({ topCircle: topCircle, leftCircle: leftCircle });
        }
        this.setData({
            circleList: circleList
        })
        //圆点闪烁
        setInterval(function () {
            if (_this.data.colorCircleFirst == '#FFDF2F') {
                _this.setData({
                    colorCircleFirst: '#FE4D32',
                    colorCircleSecond: '#FFDF2F',
                })
            } else {
                _this.setData({
                    colorCircleFirst: '#FFDF2F',
                    colorCircleSecond: '#FE4D32',
                })
            }
        }, 500)
        //奖品item设置
        var awardList = [];
        //间距,怎么顺眼怎么设置吧.
        var topAward = 25;
        var leftAward = 25;
        for (var j = 0; j < 8; j++) {
            if (j == 0) {
                topAward = 25;
                leftAward = 25;
            } else if (j < 3) {
                topAward = topAward;
                //166.6666是宽.15是间距.下同
                leftAward = leftAward + 166.6666 + 15;
            } else if (j < 5) {
                leftAward = leftAward;
                //150是高,15是间距,下同
                topAward = topAward + 150 + 15;
            } else if (j < 7) {
                leftAward = leftAward - 166.6666 - 15;
                topAward = topAward;
            } else if (j < 8) {
                leftAward = leftAward;
                topAward = topAward - 150 - 15;
            }
            var Award = this.data.Award[j];
            awardList.push({ topAward: topAward, leftAward: leftAward, Award: Award });
        }
        this.setData({
            awardList: awardList
        })
    },
    //开始游戏
    startGame: function () {
        if (this.data.isRunning) return
        this.setData({
            isRunning: true
        })
        var _this = this;
        var indexSelect = 0
        var i = 0;
        let f = Math.floor(Math.random() *8);
        console.warn(f)
        var timer = setInterval(function () {
            indexSelect++;
            //可根据自己的需求改变转盘速度
            i += 90;
            if (i > 1000) {
                //判断是随机生成的那个值得时候就停止
                if (f == indexSelect % 8){
                    _this.setData({
                        indexSelect: indexSelect
                    })
                    //去除循环
                    clearInterval(timer)

                    _this.setData({
                        isRunning: false
                    })
                }
                
                
                //获奖提示
                if(!_this.data.isRunning){
                    wx.showModal({
                        title: '恭喜您',
                        content: '获得了' + (_this.data.Award[f].name)+'尚坡红包',
                        showCancel: false,//去掉取消按钮
                        success: function (res) {
                            if (res.confirm) {

                            }
                        }
                    })
                }
               
            }
            indexSelect = indexSelect % 8;
            _this.setData({
                indexSelect: indexSelect
            })
        }, (200 + i))
    }
})

wxss

.container-out {
  height: 600rpx;
  width: 650rpx;
  background-color: #b136b9;
  margin: 100rpx auto;
  border-radius: 40rpx;
  box-shadow: 0 10px 0 #871a8e;
  position: relative;
}

.container-in {
  width: 580rpx;
  height: 530rpx;
  background-color: #871a8e;
  border-radius: 40rpx;
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  margin: auto;
}


.circle {
  position: absolute;
  display: block;
  border-radius: 50%;
  height: 20rpx;
  width: 20rpx;
}

.content-out {
  position: absolute;
  text-align: center;
  height: 150rpx;
  width: 166.6666rpx;
  background-color: #f5f0fc;
  border-radius: 15rpx;
  box-shadow: 0 5px 0 #d87fde;
  color: #f6251e;
  line-height: 150rpx;
}

/**居中 加粗*/

.start-btn {
  position: absolute;
  margin: auto;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
  border-radius: 15rpx;
  height: 150rpx;
  width: 166.6666rpx;
  background-color: #ffe400;
  box-shadow: 0 5px 0 #e7930a;
  color: #f6251e;
  text-align: center;
  font-size: 55rpx;
  font-weight: bolder;
  line-height: 150rpx;
}

安装Python2.7的虚拟环境

因为python的框架的版本更新换代很快,而且很多版本之间不兼容,所以通过python的虚拟环境来进行区分。
操作:

  • 安装打开mac的终端,执行pip install virtualenv
  • 创建执行virtualenv venv
  • 激活执行source venv/bin/activate
  • 退出执行deactivate

安装Flask

  • 执行:pip install Flask
  • 启动flask

    export FLASK_APP=flaskr
    export FLASK_ENV=development //打开所有开发功能(包括调试模式)
    flask run

前提:这两个微信小程序必须是同一公众号绑定的小程序。
操作

  • 首先在app.json配置文件里面配置好要跳转的微信小程序的appid

    "navigateToMiniProgramAppIdList": [ "微信小程序的appid" ] 
  • 设置跳转的事件

    • navigator跳转

        <navigator target="miniProgram" open-type="navigate" app-id="要跳转的小程序的appid" path="要跳转的页面" extra-data="" version="release">打开绑定的小程序</navigator>
    • 点击跳转

      wx.navigateToMiniProgram({
        appId: 小程序appid,
        path: 要跳转的页面,
        extraData: {
          // from: 'xxxxx'
        },
        envVersion: 'develop',
        success(res) {
          // 打开其他小程序成功同步触发
           wx.showToast({
             title: '跳转成功'
           })
        }
      })

也许是由于版本的原因,把SpringBoot2的改为了SpringBoot1.5,发现在swagger这个接口文档突然不能用了。出现了下面的错误

Unable to infer base url. This is common when using dynamic servlet registration or when the API is behind an API Gateway. The base url is the root of where all the swagger resources are served. For e.g. if the api is available at http://example.org/api/v2/api-docs then the base url is http://example.org/api/. Please enter the location manually:

解决办法:
在ApiApplication里面添加@EnableSwagger2

SpringBoot开启日志
在SpringBoot的配置文件application.properties文件里加入以下内容

#com.mycompany.mavenspringboot.controller 日志 WARN级别输出
logging.level.com.univalsoft.api.controller=WARN
#com.mycompany.mavenspringboot.mapper sql日志 DEBUG级别输出
logging.level.com.mycompany.mavenspringboot.mapper=DEBUG

logging.file=logs/spring-boot-logging.log
logging.pattern.console=%d{yyyy/MM/dd-HH:mm:ss} [%thread] %-5level %logger- %msg%n
logging.pattern.file=%d{yyyy/MM/dd-HH:mm} [%thread] %-5level %logger- %msg%n