微信小程序time
A. 微信小程序里,怎麼設置兩個日期的差,並以天數顯示出來
在小程序的wxml文件中添加如下代碼:
<text>已經
{{d}}天{{h}}時{{m}}分{{s}}秒</text>
在小程序的js文件中添加如下代碼:
Page({
onLoad:function(){
varthat=this
setInterval(function(){
vart1=newDate("2018/05/2308:20:00")
vart2=newDate()
vart=newDate(t2-t1+16*3600*1000)
that.setData({
d:parseInt(t.getTime()/1000/3600/24),
h:t.getHours(),
m:t.getMinutes(),
s:t.getSeconds()
})
},1000)
}
})
B. 微信小程序怎麼實現日歷的年視圖功能
因為日歷是系統自帶的,所以讀寫它一定要申請許可權,也就是在AndroidManifest.xml加如下兩行代碼(一個讀一個寫):
<uses-permission android:name="android.permission.READ_CALENDAR"/>
<uses-permission android:name="android.permission.WRITE_CALENDAR"/>
Android中日歷用了三個URL,分別是日歷用戶的URL,事件的URL,事件提醒URL,三個URL在Android2.1之前是如下的樣子:
calanderURL = "content://calendar/calendars";
calanderEventURL = "content://calendar/events";
calanderRemiderURL= "content://calendar/reminders";
但是在Android2.2版本以後,三個URL有了改變,變成如下的樣子:
calanderURL = "content://com.android.calendar/calendars";
calanderEventURL = "content://com.android.calendar/events";
calanderRemiderURL = "content://com.android.calendar/reminders";
簡單的Demo,按照我的步驟一步一步的來:
第一步:新建一個Android工程命名為CalendarDemo.
第二步:修改main.xml布局文件,增加了三個按鈕,代碼如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<Button
android:id="@+id/readUserButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Get a User"
/>
<Button
android:id="@+id/readEventButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Get a Event"
/>
<Button
android:id="@+id/writeEventButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Input a Event"
/>
</LinearLayout>
第三步:修改主核心程序CalendarDemo.java,代碼如下:
package com.tutor.calendardemo;
import java.util.Calendar;
import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class CalendarDemo extends Activity implements OnClickListener {
private Button mReadUserButton;
private Button mReadEventButton;
private Button mWriteEventButton;
private static String calanderURL = "";
private static String calanderEventURL = "";
private static String calanderRemiderURL = "";
//為了兼容不同版本的日歷,2.2以後url發生改變
static{
if(Integer.parseInt(Build.VERSION.SDK) >= 8){
calanderURL = "content://com.android.calendar/calendars";
calanderEventURL = "content://com.android.calendar/events";
calanderRemiderURL = "content://com.android.calendar/reminders";
}else{
calanderURL = "content://calendar/calendars";
calanderEventURL = "content://calendar/events";
calanderRemiderURL = "content://calendar/reminders";
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
setupViews();
}
private void setupViews(){
mReadUserButton = (Button)findViewById(R.id.readUserButton);
mReadEventButton = (Button)findViewById(R.id.readEventButton);
mWriteEventButton = (Button)findViewById(R.id.writeEventButton);
mReadUserButton.setOnClickListener(this);
mReadEventButton.setOnClickListener(this);
mWriteEventButton.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if(v == mReadUserButton){
Cursor userCursor = getContentResolver().query(Uri.parse(calanderURL), null,
null, null, null);
if(userCursor.getCount() > 0){
userCursor.moveToFirst();
String userName = userCursor.getString(userCursor.getColumnIndex("name"));
Toast.makeText(CalendarDemo.this, userName, Toast.LENGTH_LONG).show();
}
}else if(v == mReadEventButton){
Cursor eventCursor = getContentResolver().query(Uri.parse(calanderEventURL), null,
null, null, null);
if(eventCursor.getCount() > 0){
eventCursor.moveToLast();
String eventTitle = eventCursor.getString(eventCursor.getColumnIndex("title"));
Toast.makeText(CalendarDemo.this, eventTitle, Toast.LENGTH_LONG).show();
}
}else if(v == mWriteEventButton){
//獲取要出入的gmail賬戶的id
String calId = "";
Cursor userCursor = getContentResolver().query(Uri.parse(calanderURL), null,
null, null, null);
if(userCursor.getCount() > 0){
userCursor.moveToFirst();
calId = userCursor.getString(userCursor.getColumnIndex("_id"));
}
ContentValues event = new ContentValues();
event.put("title", "與蒼井空小-姐動作交流");
event.put("description", "Frankie受空姐邀請,今天晚上10點以後將在Sheraton動作交流.lol~");
//插入[email protected]這個賬戶
event.put("calendar_id",calId);
Calendar mCalendar = Calendar.getInstance();
mCalendar.set(Calendar.HOUR_OF_DAY,10);
long start = mCalendar.getTime().getTime();
mCalendar.set(Calendar.HOUR_OF_DAY,11);
long end = mCalendar.getTime().getTime();
event.put("dtstart", start);
event.put("dtend", end);
event.put("hasAlarm",1);
Uri newEvent = getContentResolver().insert(Uri.parse(calanderEventURL), event);
long id = Long.parseLong( newEvent.getLastPathSegment() );
ContentValues values = new ContentValues();
values.put( "event_id", id );
//提前10分鍾有提醒
values.put( "minutes", 10 );
getContentResolver().insert(Uri.parse(calanderRemiderURL), values);
Toast.makeText(CalendarDemo.this, "插入事件成功!!!", Toast.LENGTH_LONG).show();
}
}
}
第四步:在AndroidManifest.xml中申請許可權,代碼如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.tutor.calendardemo"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".CalendarDemo"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="7" />
<uses-permission android:name="android.permission.READ_CALENDAR"/>
<uses-permission android:name="android.permission.WRITE_CALENDAR"/>
</manifest>
第五步:運行上述Android工程,查看效果:
C. 微信小程序picker的mode有date和time,有同時支持date和time的嗎
安卓裡面來的時間控制項與日期自控制項都是分開的,如果要同時使用的話用戶體驗度那肯定不好,整合了安卓中的時間與日期控制項,可以同時顯示出來方便用戶進行選擇,使用時只需要將文件導入項目中,再需要用到的地方使用如下代碼
D. 微信小程序,延時執行js函數的問題
fight:function(e){
that=this;
that.setData({
buttondisabled:true,
loading:true
});//<--這里是分號不是逗號
setTimeout(function(){
that.setData({
buttondisplay:'none',
playerdisplay:'block'
})//這里的錯誤不太好描述,自己看了
},9000);
}
E. 微信小程序可以正常使用settimeout嗎
可以的,具體代碼如下:
setTimeout(function(){
//你需要執行的代碼
},2000)
F. 微信小程序怎麼實現內容的展開和收起
看到一個需求,對一些前端小白或者剛開始寫小程序的人來說,可能會有點幫助,效果如下:
就是以上效果,廢話不多說,上代碼
wxml:
<view class='list_box' wx:for='{{list}}' wx:key='this' wx:for-item='parentItem' wx:for-index='parentIndex' >
<view class='list'>
<view class='list_name_box' catchtap='listTap' data-parentindex='{{parentIndex}}'>
<text class='list_item_name'>{{parentItem.listName}}</text>
<image src='/img/down.png' class='icon_down {{parentItem.show&&"icon_down_rotate"}}'></image>
</view>
<view class='list_item_box' wx:if='{{parentItem.show}}'>
<view class='list_item' wx:for='{{parentItem.item}}' wx:key='this' catchtap='listItemTap' data-index='{{index}}' data-parentindex='{{parentIndex}}'>
<view class='list_item_name_box'>
<text class='list_item_name'>{{item.itemName}}</text>
<image src='/img/down.png' class='icon_down {{item.show&&"icon_down_rotate"}}'></image>
</view>
<view class='other_box' wx:if='{{item.show}}'>
<view class='other'>
<text class='other_title'>內容:</text>
<text class='other_text'>{{item.content}}</text>
</view>
<view class='other'>
<text class='other_title'>時間:</text>
<text class='other_text'>{{item.time}}</text>
</view>
</view>
</view>
</view>
</view></view>
然後wxss:
page{
background: #f3f7f7;}.list_name_box{
background: #fff;
border-bottom: 1px solid #efefef;
display: flex;
height: 90rpx;
align-items: center;
padding: 0 25rpx;
font-size: 32rpx;}.list_item_name{
flex: 1;}.icon_down{
width: 35rpx;
height:35rpx;
transition:transform 0.3s;}/* .list_item_box{
height: 0;
transition:height 0.3s;
overflow: hidden;
}
.list_item_box_show{
height: 500rpx;
} */.list_item_name_box{
background: #fff;
font-size: 30rpx;
height: 80rpx;
display: flex;
align-items: center;
padding: 0 25rpx 0 50rpx;}.other{
display: flex;
height: 80rpx;
padding: 0 25rpx 0 50rpx;
align-items: center;
font-size: 30rpx;
color: #666;}.icon_down_rotate{
transform:rotate(180deg);}
JS:
// pages/dome/dome.jsPage({
/**
* 頁面的初始數據
*/
data: {
list:[
{listName:'列表1',
item:[{
itemName:'子列表1-1',
content:'1-1中的內容',
time: '2015-05-06'
}, {
itemName: '子列表1-2',
content: '1-2中的內容',
time: '2015-04-13'
}, {
itemName: '子列表1-3',
content: '1-3中的內容',
time: '2015-12-06'
}]
},
{
listName: '列表2',
item: [{
itemName: '子列表2-1',
content: '2-1中的內容',
time: '2017-05-06'
}, {
itemName: '子列表2-2',
content: '2-2中的內容',
time: '2015-08-06'
}, {
itemName: '子列表2-3',
content: '2-3中的內容',
time: '2015-11-06'
}]
}, {
listName: '列表3',
item: [{
itemName: '子列表3-1',
content: '3-1中的內容',
time: '2015-05-15'
}, {
itemName: '子列表3-2',
content: '3-2中的內容',
time: '2015-05-24'
}, {
itemName: '子列表1-3',
content: '3-3中的內容',
time: '2015-05-30'
}]
}
]
},
//點擊最外層列表展開收起
listTap(e){
console.log('觸發了最外層');
let Index = e.currentTarget.dataset.parentindex,//獲取點擊的下標值
list=this.data.list;
list[Index].show = !list[Index].show || false;//變換其打開、關閉的狀態
if (list[Index].show){//如果點擊後是展開狀態,則讓其他已經展開的列表變為收起狀態
this.packUp(list,Index);
}
this.setData({
list });
},
//點擊裡面的子列表展開收起
listItemTap(e){
let parentindex = e.currentTarget.dataset.parentindex,//點擊的內層所在的最外層列表下標
Index=e.currentTarget.dataset.index,//點擊的內層下標
list=this.data.list;
console.log(list[parentindex].item,Index);
list[parentindex].item[Index].show = !list[parentindex].item[Index].show||false;//變換其打開、關閉的狀態
if (list[parentindex].item[Index].show){//如果是操作的打開狀態,那麼就讓同級的其他列表變為關閉狀態,保持始終只有一個打開
for (let i = 0, len = list[parentindex].item.length;i<len;i++ ){
if(i!=Index){
list[parentindex].item[i].show=false;
}
}
}
this.setData({list});
},
//讓所有的展開項,都變為收起
packUp(data,index){
for (let i = 0, len = data.length; i < len; i++) {//其他最外層列表變為關閉狀態
if(index!=i){
data[i].show = false;
for (let j=0;j<data[i].item.length;j++){//其他所有內層也為關閉狀態
data[i].item[j].show=false;
}
}
}
},
onLoad: function (options) {
},
/**
* 生命周期函數--監聽頁面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函數--監聽頁面顯示
*/
onShow: function () {
},
/**
* 生命周期函數--監聽頁面隱藏
*/
onHide: function () {
},
/**
* 生命周期函數--監聽頁面卸載
*/
onUnload: function () {
},
/**
* 頁面相關事件處理函數--監聽用戶下拉動作
*/
onPullDownRefresh: function () {
},
/**
* 頁面上拉觸底事件的處理函數
*/
onReachBottom: function () {
},
/**
* 用戶點擊右上角分享
*/
onShareAppMessage: function () {
}})
作者:
鏈接:https://www.imooc.com/article/30662
來源:慕課網
本文原創發布於慕課網 ,轉載請註明出處,謝謝合作
G. 微信小程序組件之picker 怎麼獲取time的整點
安卓裡面抄的時間控制項與日期控制項都是分開的,如果要同時使用的話用戶體驗度那肯定不好,整合了安卓中的時間與日期控制項,可以同時顯示出來方便用戶進行選擇,使用時只需要將文件導入項目中,再需要用到的地方使用如下代碼
H. 微信小程序這種json數據要怎麼在前端循環輸出{"0":{"day":"7","time_data":"數據"}}
講解下循環輸出元素
這里寫圖片描述
這里寫圖片描述
後台存儲的數據給事
{
var local_database = [
{
date: "Sep 18 2016",
post_title:"冬日校花",
post_image: "/images/1.jpg",
text: "美呀,美呀",
view_num: 112,
collect_num: 96,
turn_num: 515,
author_img: "/images/6.jpg",
author:"高晴",
dateTime:"24小時",
detail:"我愛你,愛的如此深沉",
postId:0,
music:{
url: '?down/46993.mp3',
title: "雪の華-南條愛乃",
coverImg: "/music/photo_new/.jpg?max_age=2592000"
},
},
{
date: "Sep 18 2016",
post_title: "冬日校花",
post_image: "/images/2.jpg",
text: "美呀,美呀",
view_num: 112,
collect_num: 96,
turn_num: 515,
author_img: "/images/6.jpg",
author: "高晴",
dateTime: "24小時",
detail: "我愛你,愛的如此深沉",
postId: 1,
music: {
url: '/yq/5092537.mp3',
title: "愛你-陳芳語",
coverImg: "/music/photo_new/.jpg?max_age=2592000"
},
},
{
date: "Sep 18 2016",
post_title: "冬日校花",
post_image: "/images/3.jpg",
text: "美呀,美呀",
view_num: 112,
collect_num: 96,
turn_num: 515,
author_img: "/images/6.jpg",
author: "高晴",
dateTime: "24小時",
detail: "我愛你,愛的如此深沉",
postId: 2,
music: {
url: '/yq/204586755.mp3',
title: "雲煙成雨-房東的貓",
coverImg: "music/photo_new/.jpg?max_age=2592000"
},
},
{
date: "Sep 18 2016",
post_title: "冬日校花",
post_image: "/images/4.jpg",
text: "美呀,美呀",
view_num: 112,
collect_num: 96,
turn_num: 515,
author_img: "/images/6.jpg",
author: "高晴",
dateTime: "24小時",
detail: "我愛你,愛的如此深沉",
postId: 3,
music: {
url: '/yq/213919334.mp3',
title: "Your Song-Lady Gaga",
coverImg: "https://www.ztsje.com/#music/photo_new/.jpg?max_age=2592000"
},
},
]
mole.exports={
postList:local_database,
}
}
前台使用for循環輸出
這里寫圖片描述
這里寫圖片描述:
然後我們自己嘗試構建一個for循環輸出的小程序
app.js以及app.json app.wxss頁面的構造就不放出來了,不會的童鞋可以看博主的第一個小程序文章
初步構造完成如下:
這里寫圖片描述
下面是for.js的構造:
// pages/for/for.js
Page({
/**
* 頁面的初始數據
*/
data: {
data:[
{
name:"張三"
},
{
name:"李四"
},{
name:"王五"
}
],
},
/**
* 生命周期函數--監聽頁面載入
*/
onLoad: function (options) {
},
/**
* 生命周期函數--監聽頁面初次渲染完成
*/
onReady: function () {
},
})
for.wxml
<block wx:for="{{data}}" data-item="item" wx:for-index="idx" >
<view>
第{{idx}}次輸出,姓名:{{item.name}}
</view>
</block>
講解:
這里的for.js中,data是默認存在的函數,負責保存數據,前台的wxml文件只能調用data中的存在的數據
具體的調用方法為雙大括弧加上數據名
for.wxml中
需要循環輸出,需要將for元素放入block中 ,並填入需要循環輸出的數據:這里是data(註:這里的data是js中data中data,大家注意區分下,博主忘了區分)
然後data-item 是給data中的子元素添加一個調用的key名,類似於php的foreach,index則是調用的當前元素在數組中的數字下標,大家可以看到輸出結果是從零開始的
I. PHP後台做的微信小程序,請求經常會提示ERR_CONNECTION_TIMED_OUT
意思是連復接超時。原因可能有二制:1、網頁可能暫時無法連接,或者它已永久性地移動到了新網址2、不是你的網路慢,就是FTP伺服器那邊出了問題。
這個一般沒什麼解決方法的。換個FTP登錄工具試試?如FlashFXP。
如果是你網速的問題,就去網速好一點的地方登錄FTP伺服器吧。比如網吧
如果是FTP伺服器的問題,就要叫伺服器那邊的工作人員去檢查一下了。
J. 微信小程序定時器倒計時導致頁面其他時間變化
微信小程序如何添加:
第一步、更新微信版本是6.5.3,如何查看自己的版本號(點擊:我—內—設置——關於微信容)
第二步、 方法1:打開別人發給你或者掃描一個小程序二維碼。
方法2:可以在微信端首頁的搜索窗口,你可以通過搜索「小程序示例」,獲取一個小程序。點擊進去,等小程序載入完後,微信端就會自動出現小程序的按鈕。
第三步、再打開微信,點擊底部的「發現」按鈕,你會發現,頁面中多了一欄圖標為 S 型的「小程序了,點擊即可進入小程序頁面。